[도서] RabbitMQ 따라잡기: AMQP 기반의 오픈소스 메시지 브로커

예전에 본 책들 너무 쌓여서 정리중인데
이 책도 정리 대상으로 확정 되었다.
앞으로 다신 볼 것 같지도 않고 직원이나 동료나 후임이나 .. 등등 추천 해 줄 것 같지 않아서

문제점

요즘 책은 개념적인 부분만 나오고 실용적인 부분은 예제만 제공 해 주면 된다.
어차피 세부적인 코드나 설명은 다 기억도 못 하고 요즘엔 책을 레퍼런스로 보지 않으니까
예제를 실행이 되게 만들어 놓는다면 긴 설명도 필요 없다.

이 책은 개념 설명이 짧고 코드가 길다.

  • Spring, Django, RoR, WPF, … 스타트 할 때 사용할만한 기술이면 코드가 필요할 수 있는데
    특정 상황에서만 사용하는 RabbitMQ, Kafka, ElasticSearch 등등은 필요없다.
  • 요즘은 책을 다시 찾아보지 않고 인터넷에서 레퍼런스나 Stackoverflow 등을 검색한다.

책 내용

첫번째 장에서 짧게 RabbitMQ 구조와 개념 설명을 하고 뒤에서부터는 자바코드와 함께 개념을 조금씩 설명하는데…
개념이 겨우 이해가 안갈정도만 설명이 되어 있다.(이해가 안간다고. 다시 인터넷 찾아봄)
지식의 밀도가 낮다 보니 더 기억에 안 남는 것 같다.

오브젝트objects, 코드로 이해하는 객체지향 설계

내용이 너무 자바처럼 verbose하다

짧은 내용을 너무 길게 설명해서 지겨워서 볼 수가 없다.

ex) ch07. 객체분해 p216~217 2페이지는 대략 이정도로 표현할 수 있다

일반적으로 작업기억은 7개의 chunk를 가지고 있다. 즉, 한번에 기억할 수 있는 숫자는 7개까지로 아래 11개의 연속된 숫자를 한번에 기억할 수 있는 사람은 드물다

29689928269

하지만 아래처럼 변환하면?

2968-992-8269

한번에 인식 가능하고 외울수도 있다.
11자리 숫자를 한번에 기억했다면 아마도 무의식중에 숫자를 나눴을 가능성이 높다

이런식으로 큰 문제를 작은 문제로 분해decomposite하면 문제를 이해하기 쉽고 더 좋은 해결이 가능하다.

이거 볼 시간에 DDD, JPA를 보자.
그래도 시간이 남으면 매트릭스와 에일리언을 보자

[기술서] 파이썬 병렬 프로그래밍 – 내용없음

리뷰 내용 말고 책 내용없음
스레드나 그 메커니즘을 자세히 설명한 것도 아니고
튜토리얼이 잘 나온것도 아니다

GIL이라던가.. 하는 파이썬에서 논란이 많은 부분에 대한 설명이있었으면 했는데
그냥 키워드만 나온다
각 기술의 차이도 비교가 상세히 되어있지 않다.

그냥 파이썬에서 병렬프로그래밍을 할 수 있는 기술과 그 샘플코드 정도만 소개 돼 있다.

내부모듈 이용

  1. threading
  2. multiprocessing

라이브러리 이용(추상화계층을 얹어서 병렬프로그래밍 구현)

  1. Celery: 표준. https://docs.celeryproject.org/en/stable/
    multiprocessing, gevent, eventlet 등 활용
  2. PP: Parallel Python 안쓰이지 않나….

파이썬 분산형 서버를 만들때 사용하는 기술

이 책에서는 참고할게 없고 그냥 일반적으로는

  • RabbitMQ, Redis 사용시에는 Celery 사용
  • Kafka와 StreamData를 다룰 때는 FaustStreams 사용

threading이나 multiprocessing은 쓸 일이 있을까
한 서버에서 돌릴수 있는 정도의 프로그램을 만들때
웹프로그램에서는 사용하지 않음

UNIX 유닉스의 탄생

그냥 옛날이야기나 써 있을 줄 알았는데
기술서적이었다

유닉스 계열을 많이 경험 해 보지 않은 사람이 보면 대부분 내용은 그냥 넘어가야 하지 않을까
awk, sed, grep, … 을 한 번도 써 보지 않았다면 내용에 몰입하기 힘들 것 같다.

자주 사용하던 기술들이 어떻게 만들어졌고 왜 생겼는지를 알게 되는것으로도
기술을 이해하는데 도움이 되니
유닉스계열(리눅스)를 자주 사용하는 사람이라면 한번 보면 좋을 것 같다

미국의 벨 연구소

kt연구소랑 비슷한 분위기일 것 같다
독점기업의 지원금에 돈 걱정없고
빡빡한 듯 하지만 자유롭고
연구 좀 실패해도 아무도 뭐라 안 하고

KT연구소도 좀

리액트 웹앱 제작 총론 2/e: 리액트와 리덕스를 이용한 웹앱 개발 가이드, 2019

그냥 간단하게 잘 나와있다

jquery, jsp, php, asp 등등 구닥다리 웹프론트 기술을 좀 알고 있고
angular, typesript, express 정도는 조금 만져본 상태의 지식수준에서
볼 때는 대충 넘기면서 한두시간 보면 되는 정도..
요약을 잘 해 놓으면 네다섯페이지도 안되는 분량

리엑트나 웹 프레임웤을 처음 접하는 사람이 볼 수 있을지는 모르겠다
난 이 책을 보기전에 리엑트로 된 어드민사이트를 며칠 살짝 만져보긴 한 상태라서 좀 더 쉬웠는지도 모르겠다.
아예 프로그래밍 초보자라면 따라하고나서 남는거 하나도 없을 듯 하고

카프카 기술서 두권 비교

아파치 카프카로 데이터 스트리밍 애플리케이션 제작 – 에이콘

카프카에 대해서 개괄적으로 나와 있기는 한데 정리가 깔끔하지는 않다

훑어보기는 괜찮다

그런데… 이 책이 더 좋은 것 같다

~~~

기술만 훑어보려고 하는거면 1~2단원만 보면 될 것 같고 자세히 보려면 좀 오래걸릴 것 같다.
코드랑 기술이 상세하게 설명 돼 있어서 더 그런것같은데..

메시지 전송 기술에서 카프카가 거의 표준으로 자리잡아서 다른걸 생각하기가 힘들 정도다
복잡한 라우팅을 하는 경우에 AMQP를 쓴다고는 하지만… AMQP에서 지원되는 케이스를 생각 해 봐도 카프카에서도 다 할 수가 있을 것 같다

예전에 금융사 SMS처리하는 프로젝트에서 사람들 mysql가지고 개삽푸는거 본 적이 있는데
내가 들어갔으면 메시지 서비스로 하지 않았을까 싶은데…
그 때는 rabbitmq를 선택하지 않았을까?? 카프카의 특성을 제대로 모르고 있어서..
당시에는 문서도 잘 안나와있어서 좀 골치아프기도 했다.
요새는 번역서도 나와있어서 사용하기 좋은 것 같다

끝으로 최근.. 아파치에서 카프카의 경쟁 시스템이 출현했다는 슬픈소식

Apache Pulsar

[도서] RxJava를 활용한 리액티브 프로그래밍

왜?

보통은 개발을 하다가 필요하다고 생각되는 기능을 검색하거나
기술블로그를 보면서 재밌어 보이거나 필요해 보이는 것들을 찾아서 공부하는데
RxJava는 별로 필요성이 안 느껴져서 관심을 갖지 않았다.

그냥 Reactive 프로그래밍을 가능하게 해주는 프레임워크?로
GUI프로그래밍 할 때나 사용하겠지 … 하고 말았었다.
개인적으로는 웹개발을 하면서는 쓰레드나 Callback 지옥을 경험해본 일이 없어서..
여러 시스템에 연동하는 복잡한 서비스를 만드는 경우에는 사용하면 좋으려나

— 좀 다른 얘기지만 저번에 어느 회사 면접볼 때 Observer Pattern 얘기가 나왔을 때 눈똥그래져서 물어보시던데.. RxJava를 아는지 체크 해 본려고 했던건가

키워드 및 요약정보

자바와 안드로이드를 위한 리액티브 프로그래밍 구현체
함수형 프로그래밍의 영향
비동기 이벤트 기반 프로그램 – 스트림 방식
서버에도 적용

Rx(ReactiveExtension) 함수형프로그래밍에 영향을 받았지만 FRP(Functinoal Reactive Programming)은 아니다.
Observable/Observer<T>
Producer
Subscription/Subscriber<T>


포기.. 무슨 클래스 메서드 하나하나 다 설명을 해놨는데
안그래도 텍스트로 소스보면 몇배나 더 걸리는데 하나하나 보려면 한달은 걸리겠다.
그래서
1~2단원 앞쪽 개념설명과 인덱스만 훑어보고 넘어간다.
중요한 부분만 뽑아서 보고싶은데 편집이 불친절해서 골라먹기도 힘들게 돼 있다.
아예 필요없는 책이라고는 못하겠는데 좀 어려운 것 같다.
RxJava Getting Started같은 문서나 보고 그냥 쓰다가
필요성이 느껴질 때 다시 봐야겠다.

자바9 모듈프로그래밍, 한빛미디어

자바9의 모듈화(jigsaw) 개념을 중심만 다뤘다.

간단하다
소스루트에다가 module-info.java파일을 생성해서
module{}을 정의하고
requires, exports.. 외 몇가지 구문으로 정의하는것.

typescript같은 언어에서 export 선언한 것만 접근할 수 있는것처럼

 

이 책의 내용은 이게 전부다. 모듈화에만 집중해놔서
자세한 정보는 : http://openjdk.java.net/projects/jigsaw/quick-start

실전적용

라이브러리 개발의 경우에는 캡슐화에 신경쓰려면 세부적인 설정을 해야겠지만
일반적인 서비스모듈 개발에는 현재와 별 차이는 없을 것 같다.
maven/gradle에서 좀 더 신경쓸게 생기겠지만

gradle의 한개 모듈마다 module-info.java를 한개씩 갖게 된다.
jar파일 한개당 한개의 module이라고 생각하면 된다.

기타 책들

가장 빨리 만나는 코어 자바9: 자바9으로 배우는 모던 자바, 길벗
도 같이 봤는데.. 이건 두꺼우면서 쓸데없는 내용이 잔뜩 있고
막상 중요한 부분은 짧게 설명이 돼 있어서 제대로 보지 않았다.

자바9에서 변하는 점

구조적으로 큰 변화인지는 모르겠지만 개발하는 입장에서는 코드상에 큰 변화는 없다.

gradle에 mysql.jar을 가져와서 ide에서는 com.mysql.Driver이 검색되는데 프로젝트에서는 빨간불이 뜨는 상황은 좀 더 자주 보게 되겠지만.

어차피 지금도 gradle 모듈로 프로젝트 나눠서 개발하는 사람은 거의 변화를 못 느끼지 않을까

~

어차피 금방 보니까 한번 보면 좋지 않을까

혹시 다른내용이 있나 싶어서 꼼꼼히 읽다가 몇시간 지났는데 별거 없으니 그냥 훑어보면 될 것 같다. 아니 그냥 공식도큐먼트랑 블로그만 몇 개 봐도 되려나

[도서] Chef Solo 입문 : 인프라스트럭처 자동화 프레임워크 – 뒤늦은 완독

기술서도 완독이라는 표현을 쓰나? 잘 안쓰는 것 같기도 하고..

클라우드가 나와서 일반 개발자가 직접 인프라를 운영해서 kubernetes, hadoop 등등 클러스터를 대규모로 운영할 일은 잘 없다보니.. 인기가 많이 식었지만

개발피씨, 개발서버, local vagrant 등을 설정할 때는 여전히 유용할 것 같다.

좀 사양기술이기도 하고 책도 옛날거라 예제도 다 오류나서 해서 안보려고 했는데, vagrant 개발환경 구성하다가 왠지 chef를 적용 해 보고 싶어서 다시 보기 시작했다.
보통은 docker를 쓰는데 이번엔 몇개 프로젝트 함께 돌리는거라 프로젝트별로 설정 해 놓은 docker를 쓰기는 좀 껄끄러운 상황…
아닌가? 그냥 vagrant를 쓰고 싶었다.

옛날버전이라 책으로는 개념만 익히고 웹튜토리얼이랑 도큐먼트쪽 명령어 찾아 보면서 공부할 수 밖에 없었는데 그러다 보니 시간이 많이 걸렸다.(이틀정도..)

chef 공부하기 힘든 이유가 몇 가지 있다

  • 개념이 뒤죽박죽… chef-solo chef-client –local-mode 비슷한게 섞여있고
  • 용어는 지맘대로.. 들어도 뭔지 모름 chef, kitchen, knife
  • 버전업하면서 legacy 다 바뀜

이런 난관을 넘고 vagrant 정도는 chef로 설정할 수 있게 되어 버렸다.ㅎ

이제 안쓸수가 없군.

추가로

Chef, 클라우드 서비스 설정관리 자동화 도구.

라는 책도 있는데 이건 되는게 더없고 개념이해도 더 힘들다.
두꺼운 책이 오류나니까 더 답도없다.
(책이 처음 쓰여질때는 오류가 아니었겠지 deprecated책이라)

절대 사서 보지 말기 바람.