Tag Archives: 도서

카프카 기술서 두권 비교

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

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

훑어보기는 괜찮다

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

~~~

기술만 훑어보려고 하는거면 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같은 문서나 보고 그냥 쓰다가
필요성이 느껴질 때 다시 봐야겠다.

마이크로서비스 아키텍처 구축 대용량 시스템의 효율적인 분산 설계 기법, 한빛미디어

몇달쯤 전에 처음 볼 때는 뭐 당연한걸 책으로 써놨네~ 하면서 대충 훑어보고 말았는데
최근 MSA 관련 작업을 하면서 다시 보게 됐다.

다시 보니까 전에 못 보던 부분도 보이고 전체적인 흐름도 잘 정리되서 좋았다.

MSA 관련기술

DevOps 관련 플로우

  • 빌드시 유닛테스트
  • CI/CD
    • pull request 하면서 유닛테스트
    • 통과시 container build
      – 이미지에 로깅 툴을 넣어서배포
    • stg(staging) 배포
  • 통합테스트(수동?또는자동)
  • prd(production) 배포

예전에 제대로 모르고 넘어간 요소들

API GW(zuul), CircuitBreaker(hystrix), ServiceDiscovery(eureka), ClientLoadbalancer(ribbon)

넷플릭스쪽이 관련 인프라가 잘 돼 있어서 spring쪽 개발자는 그걸 참고하면 편하다.

MSA적용실패사례 – MSA vs Monolith

예전에 O2O 서비스를 만들 때도 SOA를 시도했다가 실패했는데
모놀리스형태로 만들어야 할 규모의 서비스를 무리하게 분할한게 원인이었다.

처음에 사용자별로 서비스를 나눈 것 까지는 좋았다.

  • 사용자ROLE별로 구분된 웹서버
    • 일반사용자
    • 관리자
    • 사장님
  • 인증서버
  • APP api서버

그런데 여기서 일부 기능을 떼서 서비스 지역정보, 메일문자전송, 다국어관리, … 이렇게 넣다보니 일이 너무 많아졌다.

DevOps도 처음 적용해서 여기저기 오류 터지는데 서비스 개발까지 하려니 죽어났다.

MSA 적용 실패요인

인력부족, 기술부족, 자금부족

MSA를 제대로 이해하고 있고 관련기술을 구성할만한 사람이 있어야된다.
연구하면서 진행하려면 서비스 개발 이외에 최소 서너명이 더 있어야 하지 않을까

서비스 변화

MSA는 서비스 목표가 확실해진 이후에 해야되는 것 같다. 전체적인 서비스 구조는 고정 되어 있고 기능을 추가하기 좋다는거지 서비스의 큰 흐름이 변하는 경우에는 절대로 쓰면 안된다.

초기 스타트업은 서비스 하다가 버리고 다시 시작하기도 하고 메인 기능이 막 바뀌고 추가되고 하니까 MSA에 적합하지 않다.

~

개발자라면 한번쯤 보는게 좋을 것 같다.

요즘 대부분 서비스가 MSA화 되어가고 있고 이정도 속도면 10년안에 국가프로젝트도 MSA적용이 일반화될 것 같으니까

자바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 모듈로 프로젝트 나눠서 개발하는 사람은 거의 변화를 못 느끼지 않을까

~

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

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

(예제로 배우는 프로그래밍) 루아

이 책을 다 봤지만 메인함수 작성하는 방법을 아직 모른다.

인터넷의 1시간만에 루아 마스터하기~ 문서같은 느낌이었다

그래도 루아 언어 자체가 간단하기 때문에 그정도면 충분할 것 같다.

메인함수 작성법이나 system.in 하는방법은 따로 찾아보면 되니까

nginx에서 사용할 수 있다고 해서 보게 됐는데 생각보다 간단해서 쉽게 접근해볼 수 있을 것 같다.

[도서] 해커와 화가 – 비아웹?? 창업자의 글 모음

비아웹.. 야후에 팔렸다는데 잘 모르겠다.
비싸게 팔렸겠지?

성공한 벤처기업인이라 그런지… 아니면 이런 사람이라 성공한 사업가가 될 수 있었던건지.. 
경제인의 시야를 가지고 있다. 공돌이가 아닌

근원적인 가치를 부로 정의하고 영어로는 wealth라고 썼을래나..
money,화폐,돈과 구분해서 생각할 줄 아는

나는 에너지와 혁신을 경제발전의 근원?으로 보고 있었는데 나만 그런건 아니었나 싶다.
미국에는 이런 생각을 가진 사람이 많은건가

리습

  1. 조건문conditional – if then else
  2. 함수의 타입function type – 함수도 변수처럼 타입
  3. 재귀 recursion
  4. 동적 타이핑 dynamic typing – 모든변수는 궁극적으로 포인터, 변수가 아니라 값, 변수 할당은포인터 자체를 복사
  5. 가비지 컬렉션 garbage collection
  6. 표현으로 이루어진 프로그램 
  7. 심볼 타입 symbol type – 문자열을 가리키는 포인터
  8. 심볼과 상수의 트리를 이용하는 코드를 위한 표기 방식 notation 
  9. 언어 전체를 계속 사용할 수 있음 – 읽는시간, 컴파일하는시간, 실행시간에 대한 구분이 없어서 동시에 실행 가능

매크로.. 뭔지 이해가..

리습존니짱. 개좋아.

lisp계열 clojure는 몇번이나 도전을 했는데… 중도포기의 연속..

요즘 시간을 내서 작은 모듈이라도 만들어보려고 하는데 잘 될까?

[도서] 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책이라)

절대 사서 보지 말기 바람.

[리뷰]Angular 앵귤러 첫걸음 – 제목에 충실하게 처음시작할 때 보면서 개념을 잡기 좋은 책

[sb_book_infobox_from_interpark id=9788968486807]

책 소개에 앞서

먼저, 이 책을 보는 시점의 제 기술수준을 밝히면
5~6년차 Java개발자로 웹개발/백엔드개발을 주로 해왔구요. 요즘은 백앤드 개발을 주로 하고 있고
HTML,CSS,JQuery,Bootstrap.. 등등 보통 SI개발자들 많이 쓰는 기술 다 비슷하게 써 봤을 것 같습니다.
TypeScript, Angular – 아예 처음은 아니고 공식사이트에서 튜토리얼을 돌려보고 간단한 페이지를 만들어본 경험은 있는 상태.

이 책을 보게된 동기

요즘엔 동적화면구성을 많이 하다보니 화면한개에 HTML, 스타일, 스크립트까지 너무 길어서 다 만들고나면 어디에 뭐가 있는지 기억도 안 날 지경으로 코드가 망가져 버리는데
정리를 하려고 해도 스크립트 코드 특성상 디버깅/테스트도 힘들고 하다보니 모듈화를 해서 구성을 하는것도 쉽지가 않구요.
결국엔 기능만 구현 해 놓고 버리게 되는 경우가 많습니다.

이런문제를 해결하기 위한 방법 중 하나로 Angular, React .. 등의 기술에 관심을 갖고 살펴보던 와중에
한빛 도서리뷰어에 뽑혀서 이 책을 보게 됐습니다.

공식사이트 : 앵귤러 첫걸음 http://www.hanbit.co.kr/store/books/look.php?p_code=B3348481708

좋은점/아쉬운점

여기부터는 책을보면서 그때그때 메모했던 부분을 옮겨적은거라 내용이 자연스럽게 이어지지 않을 수 있습니다.

  • Angular/Vue/React… 난 무조건 Angular~ 이러는 경우가 아니라면 여러 기술을 놓고 엄청 고민을 하게된다.
    Angular가 다른기술에 비해 뭐가 좋고 왜 Angular를 선택해야 하는지 비교분석이 있었으면 좋았을 것 같은데 없어서 아쉽다.
  • Angular 프레임워크의 구조부터 설명이 되어 있어서 이해에 많은 도움이 된다.
  • 어떤 사람에게는 오히려 장점일수도 있는 부분이지만…
    좀 간단히 설명하고 넘어갔으면 싶은 부분에 대한 설명이 과도한 경우도 간혹 있었다.
  • 윈도우도 맥의 brew처럼 scoop, chocolate같은 패키지 관리자가 있는데…
  • 스타일 차이일 수도 있지만 개인적으로 1~2단원에서 프레임워크의 전체적인 구조를 설명하고 뒷쪽은 세부적인 내용을 배치하는게 좋다고 생각한다.
    이 책은 좀 무작정따라하기’ 시리즈류의 구성스타일을 가지고 있어서 … 그냥 모든 내용이 순서대로 나온다.
    공식 홈페이지에 가면 도큐먼트가 다 있지만 굳이 책을 사서 보는것은 요약집(참고서?)를 사보는 것과 비슷한거다.
    책을 다 외우는 경우도 없을거고 한번 본 책을 다시 뒤적여보는 개발자도 잘 없을거다.
    기술의 뼈대만 이해하고 책의 인덱스와 키워드만 만 머릿속에 입력하고 나머지는 검색인데
    너무 교과서적인 설명이 나와서… 보는데 시간이 오래걸리는 문제가 있다.
  • ES6와 ts 언어 자체에 대한 설명에도 좀 할당이 되어있어야 하지 않을까 싶다.
  • 책의 편집에서 아쉬운점 ex)100p
@Component({
  select: 'af-simple',
    template: `<h1>Angular is awesome!!</h1>`
})
여기서 select는 이름이고 template은 템플릿이다.
라고 하는것보다

@Component({
  select: 'af-simple',    ** << 이름 **
    template: `<h1>Angular is awesome!!</h1>` ** << html 템플릿 **
})
와 같이 한눈에 보이게 표시해주면 어땠을까 싶기도 하다.

@Component ({
  select: `{컴포넌트의이름, 필수항목}`,
    template: `html 템플릿을 그냥쓸때`,
    templateUrl: 'html 템플릿의 경로.. 둘중하나 필수',
    style: : `둘중하나 필수`
    styleUrls: ['', '']
})

이 부분도 취향차이겠지만
텍스트로 길게 설명하는 것보다 소스에 주석처럼 설명이 붙어있는게
그리고 구조도와 설명이 함께 있는게 이해가 빨리 된다.

후기

처음 Angular를 접한 사람이 궁금해할만한 부분들을 구석구석 빠짐없이 잘 소개 해 주는 책으로
인내심을 가지고 끝까지 본다면 Angular 개발을 하는데 큰 도움이 될 것 같다.
구성/편집은 내 취향이 아니라서 좀 아쉽다.