반응형

요즘에 한참 클라우드 관련 내용들을 공부하고 도커, 쿠버네티스 에 대한 내용을 보다보니 마이크로 서비스에 대한 내용들을 자주 접하게 되었다. 컨테이너를 사용한 환경에서 어플리케이션을 배포하고 관리 하려면 아무래도 덩치가 큰것 보다는 좀더 작게 모듈화 해서 배포 하는것이 나을 것이다. 어플리케이션의 크기가 작아진다는 것은 간단히 생각해봐도 배포시간이 줄어들고 그렇게 되면 다운 타임 또한 줄어들게 된다. (물론 배포 전략에 따라서 이런 부분들은 없도록 하는게 맞다.) 그래서 나 또한 마이크로 서비스에 대해서 다시 관심을 갖게 되었고 이것저것 책을 찾아보고 읽어보고 있었다. 전부터 관심이 있어서 한번 읽어봐야겠다고 생각은 하고 있었는데 길벗 개발자 리뷰어에 선정되어서 이렇게 책을 접할수 있게 되었다. (베타리더때도 신청을 했었지만 그때에는 선정되지는 못했었다. ^^;)



목차는 아래와 같이 구성이 되어있다.


1장 스프링, 클라우드와 만나다.

2장 스프링 부트로 마이크로 서비스 구축

3장 스프링 클라우드 컨피그 서버로 구성 관리

4장 서비스 디스커버리

5장 나쁜 상황에 대비한 스프링 클라우드와 넷플릭스 히스트릭스의 클라이언트 회복성 패턴

6장 스프링 클라우드와 주울로 서비스 라우팅

7장 마이크로서비스의 보안

8장 스프링 클라우드 스트림을 사용한 이벤트 기반 아키텍처

9장 스프링 클라우드 슬루스와 집킨을 이요한 분산추적

10장 마이크로 서비스의 배포


부록 A 데스크톱에서 클라우스 실행

부록 B OAuth2 그랜트 타입


내가 기존에 알고 있던 내용들은 주로 컨피그 서버나 유레카를 이용한 서비스 디스커버리, 그리고 Zuul 을 사용한 라우팅 정도만 약간 해본 정도였다. 그런데 목차에서 보면 알수 있듯이 그것 이외에 다양한 내용들이 있다. 실패 전략을 통한 복구 패턴(5장), 인증및보안(7장), 그리고 이벤트 처리(8장)가 수록되어있다. 그리고 마이크로서비스 하면 중요하게 생각해야할 모니터링에 대해서 9장에 잘 설명해 주고 있다. 


또 내가 OAuth 2 처음 공부할때에 grant type 이 잘 정의가 안되어서 이해하는데 어려움이 많았었는데 이 내용도 부록을 통해서 설명해주고 있어서 공부하고 있는 입장해서 정말 알찬 구성인것 같다. 



다음은 책 내용을 살펴보자.



코드에 대한 내용과 그 의미들이 코드와 함께 담겨져 있다. 개인적으로 이런 형태의 코드 설명을 좋아하는 편이다. 그냥 종이 위에 코드만 써있는 것보다는 주석 이외에 이렇게 설명을 추가해주면 이해하는데 도움이 많이 된다. 



그리고 내가 읽으면서 가장 맘에 드는 부분이다. 마이크로서비스에 대한 개념과 구성을 거의 빠짐없이 그림으로 설명을 다 해준다. 마이크로 서비스 자체가 작은 단위로 쪼개서 전체 시스템을 구성하기 때문에 머릿속에서 그 큰 그림을 떠올리기는 쉽지가 않다. 어디에서 부터 시작을 해야 할지 막막해질 때도 있다. 그런데 이 책에서 고맙게도 구성, 개념을 알기 쉽게 그림을 통해서 설명을 해준다. 이 부분이 이 책의 가장 큰 장점인것 같다. 


책의 전체적인 내용들을 봤을때에는 초보자들을 위한 책이기 보다는 어느정도 Spring Boot 에 대한 지식을 가지고 있는 개발자에게 도움이 되는 책인것 같다. Spring Boot 에 대한 책이 아니라서 Spring Boot를 모르는 사람이 보기에는 코드부터가 어려울 수 있다. 그래서 Spring Boot 로 개발을 해봐서 코드를 이해하는데에 문제가 없는 분들이 마이크로 서비스를 이해하는데 많은 도움을 줄수 있는 책이라고 생각된다. 



728x90
반응형
반응형

10월 25일 Google Cloud Summit 2018 이 삼성역 코엑스에서 열렸다.


https://cloudplatformonline.com/2018-Summit-Korea-Home.html


페이스북으로 올라온 글을 보고 신청기간에 등록을 해서 참석하게 되었다. 



Google Cloud Summit



세미나 할때마다 자주 가는 코엑스. 처음에 돌아다닐때에는 위를 보지 않아서 오른쪽 그림이 걸려있는지 몰랐다. -_-;;. 

국내에서 처음 하는 Google Cloud Summit 이어서 인지 전에 와봤던 다른 세미나보다 현수막들이 많이 달려 있는 느낌이었다.



행사 일정이다. 파란색의 낯익은 로고를 보고 정말 의외라고 생각했다.




키노트 하는 오디토리움 내부에서 봤던 로고이다. 개인적으로 왼쪽 로고와 색깔이 맘에 들었다. 



Session

(내가 메모하는 것을 귀찮아 해서 들었던 기억력을 더듬어 가면서 적는 것이기 때문에 내용이 정확하지 않을 수 있다. 아니면 내가 잘못 이해했을 수도 있다.^^;)


빅데이터와 데이터 분석 소개



수많은 데이터를 어떻게 하면 의미있는 정보로 만들것인지, 그 만드는 과정이 굉장히 어렵다. 그런 부분을 Google 에서 쉽게 접근 할수 있도록 도와 주고 있다. 그리고 BigQuery를 통해서 수백만건의 자료들을 빠르게 필터링 하거나 원하는 정보만 가져올 수 있다. 



위와 같은 형태로 수집부터 변환, 분석까지 다양한 서비스를 손쉽게 사용할 수 있도록 제공하고 있다. 



클라우드 플랫폼 정글에서 살아남기 : 하이브리드 클라우드 구성 가이드



이 세션에서는 듣다가 느낀점이 좀 많았다. 클라우드 벤더사들도 많고 하나의 벤더만 사용하면 괜찮지만 여러개의 벤더사들을 섞어서 사용할 경우 발생하는 문제점 들이다. (회사에서) 퍼블릭 클라우드 자체를 자주 사용하지 않다보니 이러한 이슈에 대해서 고민 해본적이 없었다. 


통신 비용 : 서로 다른 클라우드 간에 트랜젝션이 발생할 경우 아웃바운드, 인바운드에 대한 비용이 발생한다. 그게 계속 되고 트래픽이 많아질수록 비용은 높아진다.

성능 :  같은 서비스라도 벤더사마다 제공하는 버전이 다르고 최적화가 다를 수 있다. 그럴 경우 결론적으로 하향 평준화 된다. 성능이 낮은 쪽으로 맞춰진다는 이야기 이다. 

보안 : 이건 어떻게 보면 당연한 이야기 이다. 내부에서 발생하는 트래픽이 아닌데.. 물론 암호화를 거치기는 하겠지만 그래도 문제가 생길 가능성이 있다. 



마이크로 서비스 아키텍처 구성하기 : Kubernetes, Istio, Spinnaker, Knative


가장 관심 있었던 세션이었는데 사진 찍는것을 깜빡했다. 마이크로 서비스에 대한 다양한 관점들, 그리고 내가 몰랐던 패턴들에 대해서 설명을 들을 수 있었다. 


죽지만 다시 살아나는 피닉스 서버 패턴. 여기에서 처음 들어봤는데 한번 찾아볼만한 내용이었다. 그리고 몰랐는데 Google Container Registry 에 이미지 올리면 취약점을 자동 스캔한다는 것을 여기에서 처음 알았다. ^^;;



클라우드 앱 디버깅과 성능 모니터링 : Stackdriver



마이크로 서비스 세션에서도 들었었지만 모든 어플리케이션이 컨테이너화 되면서 모니터링, 디버깅에 대한 내용이 강조되고 있다. 그걸 좀더 손쉽게 할수 있도록 도와주는 서비스 이다. 설명을 들으면서 느꼈는데 상당히 매력적인 툴이었다. 특히 디버거나 로깅 같은 경우는 실제 소스를 재배포 하지 않고도 Logger 를 삽입한다던가 디버깅을 해볼수 있다니. 정말 내게는 매력적이었다. 로그 찍을려고 다시 이미지 구워서 올리고 재배포 하고 했었는데. 그럴 필요가 전혀 없다는 거다. -_-;;; 정말 안되는게 없는 세상이다. 



Cloud Study Jam


참여하고 있던 Cloud Study Jam 마지막 미션과제. 발표가 있었다. 



시간표에 이름이 올라와 있는 "피넛버터" 



그래서 이렇게 저 시간에 가서 무사히(?) 팀 발표를 마쳤다. 정말 허접했지만 준비하느라 걱정이 많았었다. 만든건 왜 대체 잘 안돌아가는 건지. -_-;; 대체 외 Pod 간 연결이 안되는건지. 거의 초보인 내게 컨테이너에 뭔가를 해본다는 것 자체가 시간이 많이 걸리는 일이었다. 그래도 그 덕분에 이것 저것 사용을 해보고 해서 많은 공부가 되었다. 

나중에 동영상으로 녹화한거 다시 들어봤는데 민망해서 영상을 못보고 소리만 들었다. -_-;;; 다음에는 좀더 연습을 해야겠다. 


드디어 4개 다 모았다.~^^


기념품들 



이것 말고도 파트어 업체에서 받은 것들도 있지만 그건 제외 했다. 



Action Item


세미나에서 들으면서 몇가지 써봐야 겠다고 생각한 것들을 요약해 본다. 


- Stackdrvier 사용해보기 (디버거, 프로파일러, 로깅등)

- SRE(Site Reliability Engineering) 에 대해서 좀 찾아보자

- BigQuery 한번 써보자.

728x90
반응형
반응형




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


마이크로서비스


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


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


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



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



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

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




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

  

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


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



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


728x90
반응형

+ Recent posts