반응형

최근에는 마이크로 서비스라는 단어가 굉장히 빈번하게 사용되고 있다. 클라우드환경이 당연히 여겨지고 거기에 배포하여 운영하는 소프트웨어들이 많아지면서 어플리케이션의 구조를 마이크로서비스로 해야 한다는 이야기는 쉽지않게 찾아볼 수 있다. 

하지만 생각했던것보다 기존 모놀리스 오플리케이션을 마이크로서비스로 전환을 한다는 것은 쉽지않은 일이다. 그리고 온프라미스에서 운영되었던 환경들을 클라우드로 이전하는 것도 많은 것들의 대한 검토가 필수적이다. 그만큼 마이크로서비스는 알아야 되는것도 많고 많은 영역의 지식을 필요로 한다. 어디서부터 공부해야 할지도 막막해진다. 

그림으로 공부하는 마이크로서비스 구조, 이 책은 마이크로서비스에 대한 지식을 습득하기에 좋은 책이다. 마이크로서비스에 대한 배경부터 시작해서 구조, 패턴, 사용되는 기술들이 무엇무엇이 있는지 알수 있다.

특히 이 책의 제목에 있는 "그림으로 공부하는" 에 걸맞게 책에는 각각의 개념을 설명하기 위한 그림들이 많이 있다. 각각의 주제를 설명할 때 마다 기본적으로 구조도는 반드시 포함되어있다고 생각해도 무방할 정도로 그림이 많이 있다. 그래서 내요을 파악하는데 머릿속으로 생각하는 것보다 쉽게 이해할 수 있다. 

물론 이 책을 읽는다고 해서 마이크로서비스에 대해서 다 알수는 없다. 이책에서 설명하는 각 장 하나하나가 자세히 살펴보면 훨씬 더 많은 내용들을 공부해야 하는 경우들이 많다. 그만큼 마이크로 서비스는 복잡하고 광범위한 지식을 필요로 하는 구조이다. 

하지만 이 책으로 기본적인 지식을 습득한후 각각의 내용들에 대해서 좀더 깊게 공부해 본다면 그냥 처음부터 시작하는 것 보다는 나을것이다. 

 

 

728x90
반응형
반응형

최근에는 처리해야 할 서비스들을 도메인별로 나누어서 마이크로 서비스로 구축하는 경우가 많아졌다. 그러다 보니 서비스들 간에 서로 통신을 해야 할 일들이 많아지게 되고 이런 처리를 어떻게 해야 할지 고민이 많아졌다. 그중 하나의 방법으로 이벤트 기반으로 정의를 해서 정보를 가져올 수 있는 기법들이 나오게 되었다. 

먼저 이벤트를 정의 를하고 프로듀서는 이벤트를 생성하게 된다. 그리고 그 이벤트를 필요로 하는 컨슈머들은 해당 이벤트를 소비함으로써 프로세스를 처리하게 된다. 간단하게 말하긴 했지만 이벤트를 생산하고 소비하는 과정에서 처리해야 할 일을이 많다. 특히 정상처리 상태에서는 괜찮지만 비정상적으로 처리가 잘못될 경우에 대한 생각들을 많이 해야 한다. 

이 책은 이벤트 기반 마이크로 서비스에 대해서 무엇이 필요하고 각각은 어떤 역할을 해야 하는지 알려주고 있다. 각 레이어 별로 구간구간 처리에 대한 방법, 이론적인 내용들을 잘 설명해 주고 있다. 

하지만 읽으면서 느꼈던 점은 아무래도 이론적인 내용들이 많다보니 이런 이벤트 처리에 대한 경험이 있는 상태에서 읽으면 더 도움이 될것 같다는 생각이 들었다. 그저 막연하게 마이크로 서비스가 무엇이다, 이벤트가 무엇이다 정도 알고 있다면 내용을 이해하기가 좀 어려울수도 있을것 같다. 입문자도 읽을수 있다고는 하지만 내용이 머릿속에 잘 그려지지 않았다. 그래서 프로그래밍 레벨에서 관련 내용을 구현해보거나 운영중인 사람들이 읽기에 더 적합한것 같다. 

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

 

728x90
반응형
반응형

 

이 책은 마이크로 서비스에 대한 내용의 책이다.

기초부터 실제 구현까지 다루면서 내용이 이어지는대 다음과 같은 장단점을 찾아 볼수 있었다. 

 

장점

- 마이크로 서비스에 대한 개념에 대해서 이해를 할 수 있다. 

- 마이크로 서비스에 대한 여러가지 아키텍처들에 대한 내용을 이해 할 수 있다. 

- 마이크로 서비스를 구성할 때 어떠한 툴들이 사용되는지, 또는 툴은 어떻게 사용할 수 있는지 간단히 체험해 볼 수 있다. 

 

단점

- 실제 코드가 나오긴 하지만 배경지식 없이 책만으로는 이해하기는 힘들 것 같다.

- 개인적으로는 코드와 툴에 대한 집중을 하던지 아니면 이론에 대한 내용을 집중을 하던지 했으면 더 좋았을 것 같다는 생각이 들었다. 

 

위에 써놓은 장단점 처럼 초보자들이 공부하는데 읽은 책으로는 어려움이 클것 같다. 개발을 하면서 마이크로 서비스를 접해보고 이론적인 내용도 알고 있는 분들이 정리하면서 공부하기는 도움이 될것 같다. 

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

728x90
반응형
반응형

Pivotal 에서 개최한 Cloud-Native Day 세미나에 다녀왔다.

 

https://connect.pivotal.io/CND_Seoul_2019.html

 

Pivotal Cloud Native Day 2019 Seoul

Pivotal combines our cloud-native platform, developer tools, and unique methodology to help the world’s largest companies transform the way they build and run their most important applications. Our technology is used by Global 2000 companies to achieve str

connect.pivotal.io

요즘 관심을 갖고 있는 주제가 Cloud, Kubernetes, Microservice 였는데 마침 Pivotal 에서 Microservice  관련 해서 세미나를 해서 아주 기쁜 마음으로 다녀왔다.

클라우드 네이티브 IT를 위한 4가지 요소와 상관관계
- DevOps, CI/CD, Container, MSA

클라우드 네이티브로 가기 위한 4가지 요소로 DevOps, CI/CD, Container, MSA 를 꼽았다. 각각의 요소들은 다음과 같은 의미를 가지고 있다.

DevOps : 작은 단위의 조직. (보통 Two Pizza team 이라고 많이들 한다.)

CI/CD : 자동화, 시각화, 프로세스의 단순화

MSA : 컴포넌트 단위의 모듈화

Container : MSA를 활용할 수 있는 infra적 요소

 

현재 모놀리스 환경의 어플리케이션들이 클라우드 네이티브로 가기 위해서는 단순히 MSA 적용한다고 해서 되는것은 아니다. 그것을 운영, 개발하는 조직부터 시작해서 모든것이 그것을 잘 활용할 수 있도록 변해가야 가능한 일이다.

 

그리고 왼쪽 사진의 표에 보면 MSA 라면 한가닥 하는 회사들이 나와있다. 그 회사들의 어플리케이션 배포 주기, 배포 준비 시간을 보면 정말 놀랄만 하다. 대부분 실시간으로 사용자에게 서비스를 하는 회사들인대에도 불구하고 일단위로 배포 횟수가 상상을 초월한다. 우리 회사에서는 부끄럽지만 상상도 할수 없는 수치이다. 그런데 그보다 더 중요한 부분이 아래 빨간색으로 써있다. 배포 횟수가 중요한게 아니라 배포가 필요할때 즉시 배포 할수 있는 환경이 중요한 것이다. 여기서 말하는 배포는 무중단 배포를 의미한다. 배포때문에 사용자가 서비스를 사용하지 못하는 그런 배포를 의미하는게 아니다. (그런거 직접 경험 하면 뿌듯할것 같다... )


마이크로서비스 어떻게 디자인할 것인가.
- Pivotal AppTX

MSA를 할때 항상 고민이 되는게 Bounded Context 이다. 대체 어디까지를 하나의 서비스로 볼것인가. 

Pivotal 에서는 다음과 같은 절차로 진행을 한다고 한다. 

1. 목표설정

2. Event Storm

Event Storming 을 통해서 필요한 Event 들을 도출한다. 이건 개발자만 하는게 아니다. 개발자, 설계자, 운영자(현업?) 등이 모여서 실제 모습을 도출해 낸다. 여기에는 프로그래밍적 요소는 없다. 그리고 이것을 통해 서비스의Bounded Context를 설정한다. 

 

3. Thin Slice

Event Storming 을 통해 도출된 내용중 하나의 서비스를 선택한다. 

 

4. Boris

Boris Diagram 을 만든다. 서비스의 흐름에서 발생하는 이벤트 들을 도식화 한것이다. 이걸 함으로써 하나의 서비스에 대한 전체적인 아키택처를 확인할 수 있다. 

(화면에서 보면 포스트잇과 종이를 이용해서 했는데 툴을 사용하지 않는 이유는 툴을 사용하면 툴로 내용을 적는 사람이 말이 많아지며 다른 사람의 참여가 낮아지기 때문이라고 한다. 그리고 종이와 포스트잇을 가지고 하는것 보다 효율적인 툴을 아직까지는 보지 못했다고 한다. Event Storming 때에도 포스트잇과 종이를 이용한다고 한다. )

 

5. Snap-E

이 단계 에서는 각 단위의 api 를 정의하고 데이터 처리 및 로직을 정의한다.

 

6. 테스트 완료 및 코드 생성

7. 재사용 가능한 패턴 정리

 

이렇게 사이클이 마무리 되면 아래와 같은 흐림이 나오게 된다. 

오늘 들은 내용들 중에서 가장 기억에 남는 세션이었다. 요즘 회사에서 개발을 하면 그냥 화면 단위로 하나씩 쪼개서 맡아서 개발한다. 저렇게 서비스에 대한 내용을 다같이 모여서 그려본다든지 해본적은 거의 없었던것 같다. 단지 말로 전달 받고 그때그때 물어가면서 개발을 했다. 그런데 생각해보면 안한거지 못할 정도의 상황은 아닌것 같다. 그리고 이렇게 포스트잇으로 그려보면서 하면 좀더 재미있고 구체적인 설계가 가능하지 않을까 생각이 들었다.


마이크로서비스 어떻게 구현할 것인가.

구현의 측면에는 다른것도 다 쉽지는 않지만 특히 Database, Transaction 부분이 어렵다고 한다. 그래서 Cache, Event Sourcing 등을 사용해서 어려운 부분들을 해결한다고 한다. 


클라우드 네이티브 플랫폼의 미래
- Kubernetes 기반의 PCF 로드맵

PCF가 지향하려는 방향이 멀티 클라우드에서 벤더에 관계 없이 서비스를 사용할수 있게 해주고 개발자는 서비스 개발에만 집중할수 있도록 만들어주는 것이다. 그걸 위해서 Istio 와 Envoy 를 사용하고 있다고 한다. 이 두개는 전에 Google Cloud 세미나에서도 자주 언급되었던 건데 내용을 좀더 자세하게 살펴봐야겠다.

또 추가적으로 빌드팩에 대해서도 설명을 했다.

보통 도커 이미지를 만들려면 사용자가 필요한 라이브러리들을 Dockerfile에 정의하고 해야 하는데 빌드팩은 그런게 필요 없었다.

개발자가 서비스를 개발해서 PKS에 cf push 를 통해서 올리면 자동으로 필요한 라이브러리들을 찾아서 이미지를 만들어준다. 그리고 도커 이미지의 특정 레이어를 rebase 해서 교체를 할수 있다. (이게 좀 신기했다.)


Pivotal Concourse 를 활용한 CI/CD pipeline automated build-up & Workflow management solution 소개

CI/CD 툴로 Jenkins가 아닌 Concourse를 소개하는 세션이었다. 

Jenkins 가 UI 를 통해서 쉽게 Build pipeline을 만들 수 있는데 오히려 그 부분이 약점이 라고 한다. Concourse  는 특정 파이프라인을 만들고 지우고 또 새로 생성하는 모든 부분들을 yaml을 파일에 정의해서 자동으로 실행을 할수 있다. 그런데 yaml 파일 작성이 쉽지는 않다고 들었던것 같다. ^^;


숨겨진 마이크로서비스

캐시, 메세지 큐에 대한 내용이 많았다. 그리고 MSA를 위한 여러가지 아키텍처에 대한 설명도 있었는데 역시 마지막 시간은 집중력이 떨어졌다. ^^;; 특히 Kafka 를 로그를 위한 장치가 아닌 다른 용도로 응용해서 사용할수도 있는데 꼭 알아두라고 한다. 전에 개인 발표 때문에 Kafka 쓰다가 사리 나올뻔 했는데 이번 기회에 다시 한번 보는것도 좋을것 같다. 


 

언제나 그랬듯이 세미나를 들으면 공부 뽐뿌가 오게 된다. 일단 적어두고 차근차근 알아보자.!!!

Kafka, EvCache, Istio, Envoy

 

그리고 올해도 역시 spring one 행사가 열린다. 얼리버드는 할인을 해준다는데...정말 가고싶다. ㅠㅠ 언제쯤 한번 가볼수 있으려나...

 

728x90
반응형
반응형

마이크로서비스를 구현(?) 하는 방법으로 TCC 라는 방법을 사용한 기사가 있어 내용을 소개하고자 한다. 

https://dzone.com/articles/transactions-for-the-rest-of-us

원문은 위에 dzone 사이트에 있다. 


TCC : Try-Confirm/Cancle


예약 시스템이 있다고 가정해보자. 예약은 다음과 같은 경우에 이루어진다. 

비행기와 자동차를 각각의 업체에서 예약을 한다. 바르셀로나로 가는 비행기를 예약을 하고 스페인 남부로 가기 위한 자동차를 예약 한다고 가정해보자. 

비행기 표가 없으면 차를 예약 할 필요가 없고 차가 없으면 비행기를 예약할 필요가 없다. 결론적으로 둘다 예약 가능 해야 예약을 한다. 


TCC에서 정의하는 기본적인 단계

1. 항공사에 HTTP POST 로 비행기를 예약 한다. 항공사는 확정을 하기 위한 URI와 expiration 을 준다. 

2. 렌터카 업체에 HTTP POST 로 자동차를 예약 한다. 마찬가지로 렌탈 업체는 확정을 하기 위한 URI 와 expiration 을 준다. 

3. 각각 받은 URI로 PUT 메소드로 호출을 한다.


Cancel 과 Confirm

항공사와 렌터카는 expiration 기간이 지난 후에는 자체적으로 취소하는게 가능하다. 이것은 위에서 정의한 3번을 실행하기 전에 이미 expiration 기간이 지났음을 의미한다. 

3번이 실행된 이후에 발생하는 각각의 오류에 대해서는 항공사나 렌터카 서로에게 영향을 주지 않는다. 이미 예약은 Confirmed 된 상태이기 때문이다. 


TCC Service / Participant

TCC participants (여기에서는 항공사와 렌터카) 는 "예약" 서비스를 위한 간단한 라이프 사이클 모델을 구현하기 위해 다음과 같은 상태를 따른다.

1. Initial : 아무것도 일어나지 않은 상태이다.

2. Reserved : HTTP POST를 통해서 "Try"를 한 상태이다. participants(항공사 또는 렌터카)는 Confirm 을 할 수 있는 URI와 만료시간을 제공한다. 

3. Final : 예약이 확정된 상태이며 쉽게 취소할수 없다. participants 가 지정된 시간 안에 HTTP PUT 메시지를 받으면 이 상태로 변경된다.

그림으로 표현하면 아래와 같다. 

Post 메소도를 통해서 받은 응답에는 PUT 으로 보낼수 있는 URI(ID 포함) 와 expiration 이 포함되어야 한다. 

보기에는 간단해 보이지만 실제로 구현하려면 중간중간 exception처리가 만만치 않아 보인다. 

각각을 Rest 로 호출을 하면서 각각의 서비스에서 발생한 Exception 에 대한 처리도 고민을 해봐야 하고 Response 에 대한 딜레이를 줄이기 위해 Message Queue 사용에 대한 부분도 확인을 해봐야 한다. 


728x90
반응형
반응형


길벗 페이스북에서  진행한 개발자 리뷰어에 선정되어서 좋은 책을 받게 되었다. 여러가지 책들이 있었는데 그중 내가 선택한 책은 "Node.js 마이크로서비스 코딩 공작소" 이다. 우선 선택한 이유는 내가 관심있어 하는 Node.js 와 마이크로 서비스에 대해서 알수 있을 것 같았다. 그리고 약간 두마리 토끼를 한번에 잡아보려는 생각에 선택을 하게 되었다. 


책 표지는 위 사진에서 볼수 있듯이 아주 깔끔하게 되어있다. 요즘 트랜드인가? 라는 생각이 든다. 왜냐하면 요즘 개발 관련 서적들 보면 정말 색감이 좋기 때문이다. 개인적으로는 그런 표지들을 가지고 있는 책들을 좋아한다. 전에도 한번 리뷰에서 쓴적이 있었던 것 같은데 개발 서적들은 코드들이 많이 있어서 딱딱할 수 있기 때문에 책 색깔이라든지 그림들이 좀더 아기자기 하게 넣어주면 책도 잘 읽힐것 같다는 생각을 많이 한다. 



책은 처음 모놀리식 아키텍처부터 시작해서 설계, 구현에 대한 내용을 언급 한 후 마이크로 서비스 화 해가는 내용으로 진행된다. 그리고 내가 목차 앞부분을 찍지 않고 뒷부분을 찍은 이유는 부록 때문이다. 처음에 책을 읽는데 코드는 나오는데 환경에 대한 내용이 없어서 좀 당황했다. 목차를 살펴보니 저렇게 부록으로 환경에 대한 부분이 나와 있었다. 필요한 환경에 대해서 차례대로 설치하면 되니 책에 나오는 코드를 따라 하기전에 한번 봐두는 것이 필요할것 같다. 그리고 저렇게 따로 목차로 뒷쪽에 빠져 있으니 더 찾기도 편한것 같다. 





책 내용 구성을 보면 위와 같이 그림이 많이 들어가 있다. 그리고 읽기에 빡빡하지도 않다. 각 챕터별 내용이 각각 나눠져 있으며 챕터들이 그렇게 장수가 많지 않아서 중간중간 끊어 읽기도 편했다. 프로그래밍 관련 책이지만 그냥 가볍게 읽어도 될 정도인 구성이다. 약간 모호한 표현이긴 하지만 눈에 쉽게 읽히고 읽는데 부담이 적었다. 이건 개인적인 느낌이다. 



코드도 보면 중요한 부분에 색깔로 표시되어 있다. 그리고 코드 내에 간단한 주석이 있고 그 아래 부분에 코드에 대한 내용을 자세히 설명하고 있다. 많은 책들이 이런 형태로 코드와 설명을 표시를 하는데 색깔을 다르게 한것은 좋은 방법인것 같다. 덕분에 좀더 코드를 즐겁게 쓰고 읽을 수 있었다.


그런데 한가지 이책을 읽을때 주의할점(?) 이 있다. 이 책은 내가 생각했던 것처럼 두마리 토끼를 잡을 수 있는 책은 아니다. 책에서도  언급되어 있듯이 이 책은 Node.js에 대한 기본서는 아니다. Node.js에 대한 내용의 이해를 바탕으로 모놀리스 아키텍처와 마이크로 서비스의 차이를 이해하고 그것들을 구현하는데 Node.js를 사용한 책이다. 그렇기 때문에 이책을 통해서 Node.js 의 문법을 배워본다 던지 하는것은 무리일것 같다. 다만 Node.js 에 대한 기초 지식이 있다면 책에서 나오는 소스들을 이해하는데 더 도움이 될것 같다. 




728x90
반응형
반응형


회사에서 Spring boot를 사용하기 시작한지는 한 1~2년 정도 된것 같다. 쓴다기 보다는 Spring 사이트에 있는 소스들을 가져다 붙이는 수준이었다. 체계적으로 공부해본적은 없고 눈앞에 닥치면 찾아서 하다보니 부족한 점이 많이 느껴졌다. 이번에 받은 이 "실전 스프링 부트 워크북"은 그런 부족한 점을 채워줄수 있는 좋은 가이드가 되었다. 


Chapter 1에서 부터 4까지는 Spring Boot를 실습하기 위한 준비 단계정도로 볼수 있다. 기본적인 이론과 설명들, 프로젝트 구성에 대해서 소개를 해주고 있다. 그리고 Chapter 5부터 본격적으로 Spring Boot를 가지고 Web 어플리케이션을 만들기 시작한다. 



특히 Chapter 6 을 보면 Spring Boot Test 에 대해서 설명을 하고 있는데 책을 읽을 당시 회사에서 Spring Boot Test에 대한 내용을 한참 구글링 하던 시기였다. 내가 개발중인 코드에 대한 Controller Test case를 어떻게 작성을 해야 하나 고민을 하던 중이었는데 책의 내용들이 내게 많은 도움이 되었다. 아마도 이 책이 없었으면 코드가 뭐가 뭔지도 모를 코드들을 가져다가 썼을것이다. 




그리고 이 책의 좋은 점이 실제 작성된 코드에 대해서 중요한 부분에 대한 설명들이 많이 있다는 점이다. 다른 Spring 관련 책들도 소스 코드에 대한 설명들이 있기는 하지만 너무 추상적이거나 어렵게 설명한 책들이 많다. 하지만 이책에서는 적어도 내 기준에는 각각의 소스 코드에 대한 설명들이 이해하기가 쉬웠다. 그리고 개발관련 서적의 딱딱함이 덜 하다는 느낌이 들었다. 


기본적인 Spring Boot 에 대한 설명부터 시작해서 security, 메세징등 기본적으로 알아야 할 기능들은 잘 설명해 놓은 책이다. 물론 이거 한권으로 Spring Boot에 대한 모든 기능을 마스터 할수는 없지만 기본기를 다지기에는 아주 좋은 책이라고 생각이 든다. 단지 아쉬운 점은 이 책에도 중간중간 언급이 되어있지만 지금 사용하고 있는 Spring Boot 최신 버전과는 약간 차이가 있을 수 있다는 점이다. 책에서는 1.3.3 Release 버전을 사용하고 있는데 현재 Spring Boot 최신 버전을 1.4를 넘어 1.5, 2.0을 바라보고 있다. 이부분에 대한 것만 제외 한다면 Spring Boot에 관심 있는 분들에게 한번쯤 읽어보라고 추천해주고 싶다. 


728x90
반응형
반응형




  내가 마이크로 서비스 라는 말을 처음 들었던 것은 재작년이었던 것 같다. 회사에서 업무 때문에 처음 접하게 되었던 이 용어는 좀처럼 이해하기가 쉽지 않았다. 그리고 마이크로 서비스라는것 자체가 아직은 먼 이야기라고 생각이 되었다. 그때만 해도 "말이 쉽지. 이게 되겠어?" 라는 의심이 더 컸던것 같다. 하지만 최근에는 많은 서비스 들이 기존의 물리적 인프라 위에서 서비스를 제공하는게 아니라 클라우드 상에서 서비스를 제공하는 일이 많아 지면서 마이크로 서비스 아키텍처라는게 더 힘을 받고 있는것 같다.  


마이크로서비스


마이크로서비스란 작고 자율적으로 협업하는 서비스를 의미한다.


  단어의 뜻 자체는 그렇게 어렵지 않다. 말 그대로 "Mirco(작은단위)" + "Service",  작은 단위의 서비스를 말한다. 각각의 서비스들은 하나의 독립된 주체이며 전체는 각각의 서비스들의 집합라고 생각하면 될것 같다. 하지만 이렇게 시스템을 구성하기에는 그렇게 쉬운 일은 아니다. 이 책에서는 이렇게 쉽지 않은 마이크로서비스 아키텍처에 대해서 알아야할 이론적인 내용에 대해서 설명해주고 있다. 마이크로 서비스에 대한 정의부터 시작해서 모델링, 통합, 분해, 배포, 테스팅, 모니터링, 보안에 이르기 까지 전체적인 그림을 그릴 수 있는 내용을 담고 있다. 


  많은 내용을 담고 있지만 그중에서도 몇가지 눈여겨 본 대목을 뽑아봤다. 



  하나의 시스템을 설계 하는데에 아키텍트의 역할은 정말 중요하다. 위에 글처럼 아키텍트가 결정한 방향의 파급력은 프로젝트 내에서 정말 어마어마 하다. 방향 한번 잘못잡았다가 프로젝트가 산으로 가는 경우도 정말 많다. 그만큼 아키텍트는 의사결정에 있어서 신중해야 하고 많은 것들을 고려해야 하는 역할을 가졌다. 그리고 설계와 함께 개발에 대해서도 어느정도 이해를 하고 있어야 한다. 수채화를 그리는데 밑그림만 다 그렸다고 그림이 완성된것은 아니다. 밑그림 위에 알맞은 색깔을 칠한 후에야 그림이 완성되는 것이다. 그렇기 때문에 아키텍트가 그린 그림을 구현하는 개발 담당자들과의 협업이 그만 큼 중요하다. 가끔 이 역할 관계가 갑을관계처럼 엮이는 경우가 있다. 아키텍트가 설계를 하면 마치 그것이 마치 불변의 법인것 처럼 행동하고 잘못된것을 지적하거나 의문점을 제시하면 받아들이지 않는 사람들이 있다.  그리고 프로젝트의 인프라와 기간, 인력등을 고려하지 않고 이상만을 추구해서 설계를 하는 아키텍트들도 있다. 그리고 나서 안되면 개발자를 탓한다. 이런 상황을 겪어보다 보니 위에 나온 내용을 읽으면서 절로 고개가 끄덕여 졌다. 



  마이크로서비스 아키텍처 상에서는 각각의 기능들이 서로 다른 기능들을 이용하기 위해서는 통신을 해야 한다. 그렇다 보니 서비스간 호출에 대한 정의도 해야하고 보안 또한 중요하다. 아무래도 내부 호출보다는 외부 프로토콜을 이용한 호출이다보니 보안에 취약할 수 밖에 없다. 취약하다기 보다는 더 신경을 써야 한다. 서비스에 대한 호출이 정당한지, 아니면 권한과 역할에 대한 정보를 제대로 가지고 있는지 확인해야 할 정보들이 많다. 그래서 게이트웨이를 쓰고 인증토큰을 발행하고 정보를 암호화 하는 절차들이 필요하다. 전체적인 아키텍처 그림이 위하고 항상 같을수는 없지만 기본적인 틀은 아마 비슷할 것이라고 생각이 된다. 

  나도 현재 마이크로서비스로 구성하지는 않았지만 비슷하게 서비스를 구성하면서 보안에 관련된 검증을 받았었다. 생각지도 않은 곳에서 사용자 정보가 노출이 되고 쉽게 다른 사람의 정보를 수정/삭제 할수 있다는 것을 직접 체험을 했고 그것을 보완하면서 많은 것을 배웠다. 아마도 저 그림이 눈에 들어온 것은 그것때문이었던것 같다. 




  마이크로서비스 아키텍처는 실버불릿은 아니다.

  

  항상 모든것은 지나치면 오히려 독이 된다. 마이크로서비스가 최근들어 주목을 받고 있긴 하지만 모든 곳에 다 적용할 수 있는 만능은 아니다. 오히려 모놀리스 아키텍처의 구조를 가져가는게 더 알맞은 프로젝트들도 있다. 무작정 하게 되면 오히려 독이 될 수 있다. 마이크로서비스 아키텍처를 적용하기 위해서는 이 구조가 가진 장점들을 잘 살리고 단점들을 잘 보완 할 수 있는 설계를 할 수 있어야 하고 많은 것들을 고려해야 한다. 


  책을 읽으면서 대학교 전공 서적같은 느낌이 들었다. 지금은 번역서를 읽어서 그렇지만 영문 원서였으면 아마도 예전에 대학다닐때 운영체제 전공과목을 들었을 때와 더 비슷한 느낌이 들었을것 같다. 그만큼 많은 내용이 담겨 있고 어려운 내용들이다. 단순히 한권의 책을 읽었다고 해서 마스터 될 영역은 분명 아니다. 하지만 각각의 포인트에서 생각해야 할 점들을 잘 설명해주고있다. 좀 아쉬운점은 번역서이다 보니 번역투의 표현들이 눈에 띄었다. 약간은 매끄럽지 않다고나 할가. 그리고 설명에 대한 그림들이 좀 부족한것 같다. 글로 설명하기가 어려운 내용들을 그림으로 표현해서 설명을 했을때 이해가 더 쉽듯이 책에서 설명하고 있는 내용들을 좀더 그림으로 풀어줬으면 더 좋았을 것 같다는 생각이 들었다. 



마이크로서비스 아키텍처 구축
국내도서
저자 : 샘 뉴먼(Sam Newman) / 정성권역
출판 : 한빛미디어 2017.03.01
상세보기


728x90
반응형

+ Recent posts