반응형

챗GPT 가 요즘 핫하다는것은 많은 사람들이 알고 있다. 하지만 챗GPT가 어떻게 동작하고 있는지 알고 있는 사람은 많지 않다. 내용을 알기에는 알아야 하는 것들이 많다. 그리고 수학, 통계, 프로그래밍, 전문 용어들을 이해하는 단계가 필요해서 그저 사용성에만 관심을 기울이게 된다. 하지만 이 책을 읽고나면 챗GPT 의 동작을 이해하는데 좀더 수월해 질 수 있다. 

이 책은 총 200 페이지 정도 되지만 부록을 제외하면 130 페이지정도 된다. 두껍지 않기 때문에 출퇴근 시간을 이용해서 충분히 읽을수 있을 정도이다. 그리고 우선 수식이 많지 않아서 소설책 읽듯이 쭉 읽어내려가면된다. 특히 1장은 GPT 에 대한 이론적인 내용들을 자세히 담고 있다. 신경망과 임베딩, 트레이닝등 빠지면 안되는 내용들이 다 담겨있다. 그렇기 때문에 1장은 꼭 빠짐없이 읽기를 추천한다. 

2장과 부록을 통해서는 실습을 해볼 수있다. 물론 GPT 플러스를 사용해서 플러그인을 사용할 수 있어서 제약이 있긴 하지만 유료사용자가 아니라면 한번 참고 삼아 읽어보는것도 나쁘진 않을것 같다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

728x90
반응형
반응형

코드로 인프라를 관리하기 위해서는 어떤 것들이 필요할까. 어쩌면 우리는 이미 어느 순간 자기도 모르게 코드를 인프라로 관리하고 있을지도 모른다. 가장 간단한 예로 설정파일을 Git에 push 하고 운영, 검증, 개발로 나누어서 관리하는 것도 코드로 인프라를 관리하는 것이다. 단지 그 범위가 좁을 뿐이다. 

코드리 인프라를 관리하기 위해서는 다음과 같은 것들이 필요하다.

1. 모든 것을 코드로 정의한다.

우리가 생각하는 것 보다 코드로 관리를 할수 있는 것들이 정말 많다. 간단한 설정파일 부터 시작해서 인프라를 구성하는 요소들 까지 말하기 시작하면 한도 끝도 없다. 그리고 최근에는 클라우드를 많이 사용하기 때문에 정의해야 할 요소들이 더 많아졌다. 퍼블릭 클라우드에서 화면에서 직접 마우스를 클릭하면서 리소스를 생성할 수도 있지만 그러한 모든 작업을 코드로 정의해서 한번에 실행해 버리면 우리가 마우스를 여러번 클릭하는 수고를 덜어줄수 있다. 그리고 정의한 내용이 파일로 남아있기 때문에 언제든지 반복작업이 가능하다. 

2. 코드를 지속적으로 테스트 하고 딜리버리 한다.

코드를 작성하기 전에 테스트 코드를 만들고 수십개의 테스트 코드들을 자동으로 실행시켜서 변경에 대한 영향이 없는지 확인하는 작업은 우리가 코드를 작성할 때 자주 하는 일들이다.  인프라를 정의한 파일들도 하나의 코드들과 유사하다. 실제 정상적으로 작업이 되는지 오류는 없는지 검증이 필요하고 테스트가 필요하다. 결국 그걸 확인하기 위해서는 테스트를 해봐야 하고 실제 생성해보기도 해야 한다. 우리가 모르는 순간 리소스의 명칭이 바뀔수도 있고 정의하는 문법들이 변경되어있을 수도 있다. 자주 확인하고 테스트 해보는 노력이 필요하고 자동화가 필요하다.

3. 시스템을 작고 간단하게 빌드한다. 

인프라의 리소스를 코드로 작성해 놓은것을 찾아보면 상당히 길다. 몇줄만 가지고 끝나지는 않는다. 최소 수십줄에서 수백줄에 이를수 있다. 어느 순간 무엇이 어디 정의되어있는지 한참 찾아야 될 수도 있다. 그런 것들을 피하려면 어떻게 해야 할까. 최대한 모듈로 나눠서 작성하는 것이다. 덩치가 커지만 연관관계가 늘어나고 시간도 오래 걸린다. 그리고 실패할 경우 다시 생성해야 되는 리소스들이 많아진다. 

클라우드 사용이 늘어나면서 수많은 리소스들을 컨트롤 해야 하는 일들이 많아졌다. 그런 리소스들을 관리하기 위한 방법이 필요하고 그게 바로 코드로 인프라를 관리하는 것이다. 특정 툴을 이용한 방법을 알아본건 아니지만 이 책을 통해서  어떤 방법이 있는지, 어떤 패턴들이 있는지 공부할 수 있다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형

 클라우드를 이용한 개발 및 운영이 지금은 당연한 것으로 생각되고 있다. 그만큼 클라우드는 어느 순간 개발에 대한 영역에서 중요한 포지션을 차지하고 있다. 프로젝트를 시작하게 되면 코드관리, 배포, 운영에 대한 모든 인프라 환경이 클라우드로 변경되어가고 있다. 하지만 우리의 어플리케이션은 그런 환경에 맞게 개발되고 있는가라고 질물을 한다면 대답하기가 쉽지 않다.

이러한 어려움들을 해결하기 위해서 우리는 패턴이라는 것을 사용한다. 각각의 요건과 환경에 맞게 이미 시도해본 사람들의 경험을 바탕으로 만들어진  형식들이 바로 패턴이다. 이 책에서는 우리가 클라우드 환경에서 어플리케이션을 개발하고 운영하고 배포하기 위해서 적합한 패턴들이 어떤것들이 있는지 알려준다. 이 책을 통해 알게 되었는데 패턴이 생각보다 정말 많다.

많은 패턴들을 총 6가지의 큰 주제로 묶어서 설명을 해주고 있다.

통신패턴
연결성 및 조합 패턴
데이터 관리 패턴
이벤트 주도 아키텍처 패턴
스트림 프로세싱 패턴
API 관리 및 사용 패턴

각각의 패턴 하위에 관련된 수많은 패턴들이 있는데 다음과 같은 형식으로 설명을 해주고 있다.

패턴 정의 ---> 동작방법 ---> 사용방법 ---> 고려사항 ---> 관련 패턴

동작 방법에 대한 설명은 아래와 같이 그림들을 통해서 이해를 도와주고 있다. 아무래도 패턴이 어떻게 동작되는지 이해하기 위해서는 글보다는 전체적인 그림을 보는게 더 나은데 각 패턴마다 이렇게 동작에 대한 그림들이 있어서 이해하는데 도움이 된다.

위에서도 말했듯이 각 주제별로 정말로 많은 패턴들이 있다. 그래서 읽다보면 각 패턴에 대한 내용이 헷갈릴 때도 있다. 그래서 이책에서는 각 패턴에 대한 주제 안에서도 또 묶어서 설명을 한 후에 그 내용이 끝날때마다 비교를 해준다. 간략하게 정리가 되어있어서 앞에서 봤던 내용들을 정리도 할수 있고 차이점을 한눈에 볼 수 있다. 

그리고 제일 마지막 8장에서는 "클라우드 네이티브 패턴 적용하기" 라는 주제로 "온라인 쇼핑몰" 를 설계를 할때 어떤 패턴들을 적용하는지 나와있다. 쇼핑몰에 필요한 기능들과 그 기능들을 연결하기 위해서 어떠한 아키텍처들이 필요하고 어떤 패턴들이 알수 있다. 이부분을 통해서 직접 코드로 구현을 해보면 쇼핑몰이라는 주제를 통해 다양한 패턴들을 경험할 수 있어서 좋을것 같다. 

계속해서 말하지만 정말 많은 패턴들을 다루고 있기 때문에 각각의 패턴들에 대한 상세한 내용들이나 유즈케이스를 원한다면 다시 찾아보는 수고로움이 필요하다. 하지만 이런 패턴들이 존재한다는 것을 알고 찾는것과 모르고 찾는것은 시작점부터가 다르다고 생각한다. 그래서 클라우드 네이티브 아키텍처에 관심이 있는 분들이라면 각각의 패턴을 이해하는데 도움이 될거라 생각된다. 

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형

개발과 관련된 일을 하는 사람이라면 한번쯤은 구글에서 일하는 생각을 해봤을것이다. 나또한 그랬으며 항상 동경의 대상처럼 여겨졌다. 그들이 하는 일들은 항상 앞서 나가고 무엇인가 혁신적이고 세상을 바꿀것 같은. 그런 기본적은 생각들이 밑바탕에 깔려있었다. 이번에 읽게된 "구글 엔지니어는 이렇게 일한다" 는 그런 구글러들이 어떻게 일하는지, 무엇을 생각하는지에 대해 배워볼수 있는 책이다. 

- 이 책은 개발자들만을 위한 책이 아니다.

이 책은 소프트웨어 엔지니어링에 대한 내용을 많이 다룬다. 프로그래밍과 구분되게 소프트웨어 엔지니어링은 소프트웨어를 개발하기 위해 설계부터 시작하는 모든 라이프 사이클을 포함한다. 그게 개발관련된 일이 될수도 있고 그안의 구성원들인 사람이 될수도 있다. 따라서 이책의 제목에 있는 "구글 엔지니어"들이 일하는 것을 떠올리면 개발자들를 떠올리는게 당연하겠지만 내가 읽어본 이책은 개발자들만을 위한 책은 아니다. 개발자, 디자이너, 관리자등 모든 영역의 사람들이 읽는다면 큰 도움을 얻을 수 있는 책이다. 영역이 IT 관련된 일이 아니더래도 이 책은 많은 사람들에게 도움을 줄 수 있는 책이다. 

- 구글러들도 우리가 생각하는 것들을 동일하게 생각한다.

내 기준에서 구글을 생각하면 항상 특별할 거야 라는 생각이 전제되어있었다. 내가 겪고 있는 일들은 그들은 겪지 않을 거야 라는 생각을 했다. 하지만 그것은 잘못된 생각이었다. 그들도 나와 같은 고민을 하고 나와 같은 어려움을 부딪쳐왔다. 단지 차이점은 그들은 그것을 극복하기 위해 많은 시도와 노력을 해왔고 그 결과 지금의 모습을 만든 것이다. 현재의 모습이 하루아침에 만들어 지지는 않았다. 수도없이 반복되는 노하우들이 쌓이고 쌓여서 만들어낸 결과이다. 누가 시켜서 만든것도 있지만 그들 스스로 만들고 발전시켜나간 일들도 많다. 그게 바로 그들의 문화이고 가치인것이다. 

- 기술을 발전 시키려면 어떻게 해야하는지 그들은 알고 있다.

코드리뷰, 테스트는 개발자에게는 필수조건처럼 따라 다니는 단어이다. 하지만 이게 개발자들에게 익숙해지기 까지는 상당한 시간이 걸린다. 코드리뷰를 무시하거나, 단위 테스트를 무시하게 되면 후에 모든것들이 기술부채로 다가오게 된다. 작은 버그들이 점점 스노우볼 굴리듯 굴러가서 큰 오류를 발생시기고 만다. 그걸 방지하기 위한 행위들중 하나가 코드리뷰와 단위 테스트이다. 실제 구현되는 코드들보다 중요하게 생각해야 하는 부분이 테스트 코드이고, 내 코드가 잘못되어있는지 또는 실수는 하지 않았는지, 아니면 더 나은 방법은 없는지 찾아볼수 있는 방법이 코드리뷰이다. 그들은 그것이 중요하다는 것을 알았으며 지금도 꾸준히 실천하고 있다. 

이 책은 마치 백과사전처럼 읽으면 읽을 수록 배울것이 많은 책이다. 하지만 그들이 했던 방법들이 모두다 내게 맞는 방법은 아닐수도 있다. 하지만 최소한 그들이 해왔던 방법들을 알고 있다면 비슷한 문제를 마주했을때 좀더 현명하게 풀어갈수 있을것이다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형

이번에 구글 애널리틱스 에 대한 책을 읽게 되었다. 현재 사용중인 블로그도 구글 애널리틱스가 적용되어 있긴 하지만 최초에 적용할 때에만 블로그들 찾아본 후에 애널리틱스에서 보여주는 정보를 가지고 무언가를 해본적은 없었다. 

우선 하지 않았던 가장 큰 이유로 애널리틱스에서 보여주는 많은 정보들이 쉽게 이해가 되지 않는 점이었다. 

 

위 데이터는 현재 내 블로그에 대한 애널리틱스 화면에 나오는 데이터이다. 많은 정보들이 있지만 이것이 무엇을 의미하는지 알수가 없었다. 그런데 이번에 읽은 책을 통해서 많은 부분들을 이해할수 있게되었다.  

책에서는 애널리틱스의 각각의 용어들에 대해서 설명을 해주며 각각의 모든 기능들을 스텝바이 스텝으로 설명을 해준다. 

각 스텝에서는 무엇을 클릭을 해야 하는지, 그리고 이 화면이 무엇을 의미하는지 설명을 해준다. 그리고 화면에 대한 캡쳐 화면들도 많기 때문에 화면을 보지 않아도 이해할수 있다. 물론 직접 따라 해보는게 가장 좋긴 하다.

이론적인 내용을 이해한 후에는 실습도 추가적으로 진행을 하면서 실제 화면이 어떻게 나오는지, 데이터가 어떻게 보여지는지 확인해 볼수 있다. 참고로 구글 애널리틱스를 적용해놓은 블로그나 사이트가 없어도 걱정할 필요는 없다. 책 초반에 실습을 위한 사이트를 주기 때문에 책에 나온 실습들은 전부 해볼 수 있다.

그리고 마지막으로 좋았던 점은 각각의 보고서에 대한 설명이었다. 우리가 보고서를 만들어서 기능을 활용하는 것도 중요하지만 이 보고서가 무엇을 의미하는지, 보고서를 통해서 무엇을 예측할수 있는지에 대해서도 배울수 있다는 점이다. 데이터가 많아도 활용할 수 없으면 가치가 없어진다. 하지만 이 책은 그것을 가능하게 해준다. 

따라서 블로그를 운영하고 구글 애널리틱스를 적용해서 활용하고 있는 분들은 한번쯤 1독 해보라고 권하고 싶다. 초급부터 고급까지 많은 정보를 알수 있을것이다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형
반응형

전부터 GraphQL 이 어떤 것인지 궁금했었는데 이번에 읽은 책을 통해서 조금이나마 이해를 할 수 있었다.

이 책은 3개의 Part 와 10개의 Chapter 로 구성되어있다. 

Chapter 1 그래프QL 경험해보기 에서는 그래프QL 소개와 사용 방법에 대해서 소개를 해주고 있다. 그리고 그래프QL 로 기본적인 쿼리들을 실행해 볼수 있는 예제들을 담고 있다. 깃허브API 예제를 통해서 실행해 볼 수 있어서 깃허브 계정을 갖고 있다면 쉽게 실습을 따라가볼수 있다.

 

그리고 Chaper2 그래프QL API 작성법 을 통해 본격적으로 그래프QL 을 설계하고 스키마 리졸버를 구현해 본다. 그리고 데이터베이스와 연결하여 모델을 설계해보는 실습을 한다. 아마도 이 Chapter 가 이 책의 가장 핵심이지 않을까 생각이 된다. 이것 이외에도 최적화 방법도 소개를 해주고 있다. 

Chapter3 에서는 여러가지 형태로 그래프QL API 를 사용하는 방법을 소개해 준다. 

책을 읽으면서 느꼈던 점은 매번 Rest API 만 사용해왔던 나에게는 책이 약간 어렵게 느껴졌다. 아무래도 설계 및 구조가 생소하다 보니 그렇게 느꼈던 것 같다. 현재 1독을 하고 있는 중이지만 그정도로는 자세히 이해하기는 어려울것 같다. 따라서 1독 후에 중요 부분에 대한 것만 따로 읽어보는게 필요 할것 같다.

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형

이 책은 소프트웨어 아키텍처 설계에 대한 다양한 방법에 대해서 써놓은 책이다. 설계 뿐만 아니라 아키텍트가 알아야 하는 것들 또는 고려해야 하는 상황들도 다양한 관점에서 설명을 해준다. 책을 읽으면서 몇가지 내가 기억해두면 좋을것 같다는 부분들을 아래와 같이 작성해봤다.

아키텍처 대 설계

- 아키텍트와 개발자를 나누는 가상의 물리장벽을 통과하는 단방향 화살표는 많은 문제를 야기한다. 따라서 아키텍처, 설계 모두 소프트웨어 프로젝트 생명 주기의 일부로서 항상 서로 동기화되어야 성공할 수 있다.

아키텍처와 코딩 실무간 균형 맞추는 방법
1. POC를 자주 해본다. 가능한 한 프로덕션 수준의 고품질 코드로 작성하는 것이 좋다.
2. 기술 부채나 아키텍처 스토리에 전념한다. 또는 버그를 수정한다.
3. 코드리뷰를 자주한다.

아키텍처 특성 식별
1. 도메인 관심사에서 아키텍처 특성도출
  - 도메인의 핵심 목표와 현재상황 고려하여 아키텍처 결정
  - 모든 아키텍처 특성을 지원하는 제네릭 아키텍처 설게 --> 가장 흔한 안티패턴
  - 가급적 설계를 단순화 하는게 좋다
2. 요구사항에서 아키텍처 특성 도출

컴포넌트 식별흐름

1. 초기 컴포넌트 식별
2. 요구사항을 컴포넌트에 할당
3. 역할 및 책임 분석
4. 아키텍처 특성 분석
5. 컴포넌트 재구성
위 그림처럼 컴포넌트 식별은 한번에 끝나는게 아니라 컨포넌트의 특성을 분석해 나가면서 계속해서 수정될 수 있다.

컴포넌트 설계
- 엔티티 함정
   각각의 엔티티를 바탕으로 컴포넌트를 만드는것. 이건 프레임워크를 데이터베이스에 컴포넌트 관계형으로 매핑한 것에 불과한것이다. (내가 항상 이렇게 설계를 하고 있지 않나 싶다... )

- 액터/액션 접근법
   애플리케이션에서 뭔가 일을 하는 액터와 그들을 수행하는 액션으로 식별
- 이벤트 스토밍
   다양한 컴포넌트가 메시지나 이벤트를 이용해 서로 통신한다고 가정.
   어떤 이벤트가 일어나는지 파악하고 컴포넌트를 이벤트와 핸들러 중심으로 구축.
- 워크플로 접근법
   이벤트 스토밍의 대안으로 DDD나 메시징을 사용하지 않고 더 일반화 한 방법.
   핵심 역할을 식별하고 이 역할이 관여하는 워크플로 유형을 결정하여 식별된 활동에 따라 컴포넌트 구축.

아키텍처 스타일 : 크게 모놀리식과 분산형으로 나누면 다음과 같은 아키텍처들이 존재한다.
- 모놀리식
   레이어드 아키텍처, 파이프라인 아키텍처, 마이크로커널 아키텍처
- 분산형
   서비스 기반 아키텍처, 이벤트 기반 아키텍처, 공간기반 아키텍처, 서비스 지향 아키텍처, 마이크로서비스 아키텍처 

아키텍처 결정의 안티패턴
- 네 패를 먼저 보여주지마

  아키텍트가 잘못된 선택을 하는 것을 두려워해서 아키텍처 결정을 회피하거나 미루는 현상
  개발팀과 지속적으로 협력하면서 결정한 내용을 의도한 대로 추진 가능함. --> 모든 이슈를 아키텍트가 혼자 다 알수 없기 때문에 개발팀과 협력은 절대적임.
- 무한반복 회의
  어떤 결정을 왜 했는지 모르고 주구장창 회의만 계속 하는것.
  무한반복 회의가 발생하는 이유는 아키텍트가 자신이 내린 결정을 정당화 하는데 실패했기 때문
  아키텍처 결정을 할때 비즈니스 가치를 제시하는 것이 중요함.
- 이메일 기반 아키텍처
  아키텍처 결정을 놓치거나 잊어버리고 심지어는 그렇게 결정됐다는 사실조차 알지 못해 아키텍처 결정을 구현하지 못하는 상태.
  즉, 아키텍처 결정을 효과적으로 전달하지 못해서 발생하는 문제.
  이메일 본문에 아키텍처 결정을 포함하지 않는다. 중요한 세부사항은 단일 기록시스템(위키페이지등)에 보관해서 링크만 제공한다.
  아키텍처 결정에 정말 관심이 있는 사람들에게만 통지한다.
 

협상과 조정 tips
- 상황을 더 잘 이해하기 위해 문법과 유행어를 사용한다.
- 협상에 돌입하기 전 가능한 한 많은 정보를 수집한다.
- 다른 모든것이 실패하면 비용과 시간으로 설명한다.
- '분할 및 정복' 규칙을 활용해서 요구사항 또는 필우 조건을 검증한다.
- 증명은 언제나 논쟁을 이긴다는 사실을 명심한다.
- 지나치게 논쟁을 벌이려고 하거나 협상 과정에서 개인정인 감정을 드러내지 않는다. 간결 명료한 추론에 차분한 리더십을 더하면 반드시 협상에 승리한다.
- 개발자가 아키텍처 결정을 수용해서 어떤 작업을 하도록 설득할 때에는 '고압적으로 지시' 하지 말고 왜 그 일을 해야 하는지 정당성을 제공한다.
- 개발자가 아키텍트의 결정에 동의하지 않을 경우 그들 스스로 해결책을 찾도록 유도한다.

위 내용들 중에서도 특히 엔티티 함정 과 아키텍처 결정 안티패턴은 읽으면서 나 자신이 반성을 많이 하게 되었다. 아마도 내가 그런 안티패턴에 빠져서 설계를 하지 않았나라는 느낌이 많이 들었기 때문이다. 아키텍처에 대한 기초 지식을 얻고자 하는 분들에게 큰 도움이 될수 있는 책이라고 생각한다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형

이 책은 마이크로서비스에 대한 이론적 지식과 실습 프로젝트를 통해서 실제 마이크로서비스를 구현해볼수 있는 내용을 담고 있다. 두가지의 서비스를 각각의 다른 언어로 설계부터 개발, 릴리즈, 배포까지 프로젝트의 한 사이클을 담아놨다. 저자가 말했듯이 실제 production 에 반영을 하기에는 부족하긴 하지만 마이크로서비스를 경험해 보기에는 충분한 예제이다. 

마이크로 서비스는 굉장히 주목받고 있는 아키텍쳐이긴 하지만 실제 구현하기는 쉽지 않다. 우선 무엇보다도 뭐부터 시작해야할지가 가늠이 안간다. 모놀리스 아키텍쳐에 익숙한 개발자에게는 어느정도를 기능단위로 나눠야 되는지 구분하는게 가장 어렵게 느껴진다. 

이 책에서도 서비스 경계 설정에 대해서 다음과 같은 고려사항들을 언급해 놓았다. 

- 느슨한 결합
  - 서비스를 변경해도 다른 서비스에 영향을 주지 않는다.
  - 독립적인 배포가 가능해진다.
- 높은 응집력
  - 하나의 기능만 담당하기 때문에 응집력이 높아진다. 
- 비즈니스 기능과 연결
- 도메인 주도 설계
  - 테이블 기준이 아닌 업무 도메인 기준으로 설계가 되어야 한다.

또 한가지 중요한 요소중 하나는 데이터 이다. 

마이크로서비스의 데이터 공유
- 물리적인 데이터베이스 클러스터 공유는 가능하다
- 여러개의 마이크로서비스가 동일한 논리적인 테이블 공간과 데이터를 수정하지 않아야 한다.


여기에서 물리적인 데이터베이스 클러스터 공유가 가능하다는 말은 예를들어 같은 데이터베이스를 사용하되 스키마는 달라야 한다정도로 이해를 했다. 

다음은 개발자 워크스페이스에 대한 내용과 가이드 라인이다. 가이드 라인 같은 경우는 책에서 제시하는 환경에 의존적인 부분이 있긴 하지만 알아두면 좋을것 같다.

표준을 수립할 때에는 기술적인 '방법' 과 '무엇'을 제시하기 전에 사람들이 프로세스의 '이유'에 대해 공감할 수 있어야 한다.

  • 짧은 시간 내에 코드 설정이 가능해야 한다.
  • 새로운 마이크로 서비스는 빠르고, 쉽고, 예측 가능하게 만들어야 한다.
  • 품질 관리는 자동화되어야 한다.

개발자 경험을 위한 10가지 워크스페이스 가이드라인

  1. 도커를 유일한 종속성으로 만든다.
  2. 실행환경이 원격인지 로컬환경인지는 중요하지 않다. -> 환경에 관계 없이 실행 가능 해야한다.
  3. 서로 다른 기술 스택의 워크스페이스를 준비한다.
  4. 단일 마이크로 서비스를 실행하는 것과 여러개의 하위 시스템으로 구성된 마이크로 서비스를 실행하는것은 간단해야 한다.
  5. 가능하면 데이터베이스는 로컬에서 실행한다. (도커 사용)
  6. 컨테이너화 가이드라인을 구현한다.
  7. 데이터베이스 마이그레이션을 위한 간단한 규칙을 정한다.
    • 데이터베이스에 대한 변경사항은 마이그레이션 스크립트에 코드화 되어있어야 한다.
  8. 실용적인 테스트 자동화 방법을 정한다.
  9. 분기 및 병합 규칙을 정한다. -> 브랜치 관리
  10. 공통사항은 makefile 에 코드화 한다.

 그리고 이 책에서는 프로젝트코드들이 있다. 환경설정부터 시작해서 필요한 리소스나 툴들의 사용법들이 차례차레 나온다. 사용되는 툴의 종류도 다양하다. 우선 클라우드는 AWS 를 사용하고 Docker, Terraform, Github, kubernetes, Node.js, Argo CD 등이 있다. 

책에 그림이나 코드들이 다 나와있긴 하지만 처음부터 끝까지 따라하기는 쉽지는 않을것 같다. 그래서 책에 나온 툴들에 대해서 자세히 알 필요는 없지만 기본적인 기능을 조금이라도 알고 있다면 프로젝트를 진행하는데 더 수월할 것이다. 

여러번 말했지만 마이크로서비스로 가는 길은 쉽지 않은 길이다. 하지만 이론부터 차근차근, 작은것부터 점진적으로 변화를 시켜나간다면 실패를 줄여 나갈수 있을 것이다. 그리고 이책을 통해서 전체적인 시스템이 어떻게 구성되는지, 그리고 무엇이 필요한지 기본적인 지식을 습득한다면 큰도움이 될것이다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형
반응형

이 책을 읽기전에 저자의 알고리즘 동영상 강의를 몇번 본적이 있었다. 그래서 이 책이 나왔을때 어떤 내용으로 구성이 되어있을지 궁금했다. 그런데 마침 이렇게 한빛미디어 나는 리뷰어다를 통해서 리뷰를 작성하게 되었다.

- PART 01

처음에는 코딩 테스트, 또는 알고리즘 문제 풀이를 어떻게 준비를 해야 하는지 사전 지식을 알려준다. 코딩을 위한 준비라든지 최근 몇년간 코딩테스트 유형들을 설명해준다. 그리고 취업관련 프로세스나 준비 방법들도 간단히 소개해 주고 있다.

- PART 02 ~ PART 03

PART02 와 PART03 에서는 본격적으로 코딩테스트를 위한 이론과 기출을 풀어볼수 있다. PART02 에서는 주요 알고리즘에 대한 설명과 연관된 문제를 풀어볼 수 있다. 알고리즘 관련된 책들이 비슷한 구성을 가지고 있다고 생각이 되는데 각각의 특징은 설명을 어떻게 해주냐인것 같다. 이 책은 그런점에서 이해하기 쉽게 설명을 해주고 있다. 그리고 그림이나 음영을 적절하게 써줘서 읽어보는데 지루하지 않았다.

- PART 04

이 책의 코드들은 파이썬으로 되어있다. 그렇기 때문에 파이썬에 대해서 알 필요가 있는데 모른다고 해서 책을 못읽는 것은 아니다. 이렇게 부록에 파이썬 문법들을 넣어줬다. 물론 파이썬에 대한 모든 내용들이 들어간것은 아니지만 코딩테스트 문제를 풀기 위해서 이정도 알고 있으면 충분히 문제 푸는데에는 문제가 없을것이다. 그리고 코딩테스트 코드 작성시 유용하게 사용되는 패턴들도 있어서 참고하면 문제 푸는데 많은 도움이 될것같다.

그리고 앞에서 설명했던 알고리즘들 이외에도 코딩테스트에 유용한 알고리즘들이 부록에 많이 담겨져 있다. 우리가 수학으로 배웠던 내용들이 주로 포함되어 있다. 나같은 경우에도 실제로 코딩테스트 문제에서 알고 있으면 쉽게 풀었지만 막상 모르고 풀면 코드 작성하기가 힘들었던 문제 유형들이다. 

- 온라인 강의

마지막으로 이 책의 온라인 강의를 볼수 있다.  요즘 책들은 거의 온라인 강의를 포함하는 경우가 많은데 이 책도 이렇게 저자의 온라인 강의를 볼 수 있다. 책은 책대로 읽고 온라인 강의도 본다면 이해하는데 도움이 될것이다. 이 책 보기전에도 몇번 동영상 강의를 봤었는데 저자분이 목소리가 낮고 차분하고 과장되지 않아서 귀에 더 잘 들렸다. 

- 마무리

코딩 테스트라는게 아무래도 이론만 가지고는 결과를 보는건 거의 불가능한 시험이다. 얼마나 많이 풀어보고 다양한 유형의 문제를 경험해봤는지가 가장 중요하다고 생각한다. 그렇다는건 결과적으로 내가 많이 문제를 풀어봐야 한다.어떤 알고리즘책을 읽든 그것은 변하지 않는다. 하지만 처음 코딩테스트를 준비하거다 기본부터 파이썬으로 준비를 하고 싶은 분들에게는 한번쯤 읽어보면 꼭 도움이 될거라 생각이 든다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형

+ Recent posts