IT 트렌드 스페셜 리포트 2019 - 한 발 더 다가온 4차 산업혁명 시대의 비즈니스 기회를 잡아라 IT 트렌드 스페셜 리포트 2
김석기 외 지음 / 한빛미디어 / 2018년 11월
평점 :
절판


2019년에 주목해야 할 기술에 대해 최소한의 이해를 얻을 수 있는 좋은 책입니다ㅎㅎ

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
실전 스프링 부트 워크북 - 마이크로서비스 빌드. 메시지와 DB 핸들링. 테스트. 플러그인까지
펠리페 구티에레스 지음, 이일웅 옮김 / 한빛미디어 / 2017년 6월
평점 :
절판


키워드: 스프링 부트, 워크북, Spring Boot, 마이크로서비스, 실전, 한빛미디어, Apress


수년 간 들어왔던 스프링(Spring)에 대해 어느 정도 감이라도 잡아야겠다는 생각에 <스프링 부트 실전 워크북>을 읽게 되었다.


책의 주제가 스프링(Spring)이 아니라 스프링 부트(Spring Boot)였지만 그래도 새로 도입되는 솔루션의 코드를 파악하는 데 필요한 기초지식을 쌓을 수 있었다.

1. 주제

이 책은 높은 생산성을 제공하는 스프링 부트(Spring Boot)를 처음 접하는 독자를 대상으로 스프링 부트의 기초부터 활용까지 빠르게 소개한다.


책의 부제가 마이크로서비스 빌드, 메시지와 DB 핸들링, 테스트, 플러그인까지인데, 문자 그대로 스프링 부트의 다양한 기술을 다룬다.

2. 구성

이 책은 총 14장과 부록 1개로 구성된다.

1장 ~ 4장은 스프링 부트의 기초에 대해서 다룬다. 5장에서는 스프링과 스프링 부트를 비교한다. 이 장을 보면 스프링 부트(Spring Boot)과 왜 생산성이 높다고 하는지 알 수 있다. 그리고 6장 ~ 11장은 테스트, 데이터 엑세스, 웹, 보안, 메시지 서비스, 모니터링을 위한 액추에이터 모듈을 다룬다. 12장 ~ 13장은 스프링 부트 배포 방법과 클라우드에서 운영하는 방법을 알아본다. 그리고 14장은 스프링 부트 앱을 마이크로서비스로 개발하는 방법을 소개한다. 끝으로 부록은 스프링 부트 1.4.x 릴리스 노트를 소개한다.

3. 아쉬운 점

책을 읽으면서 아쉬웠던 점을 먼저 소개하겠다. 책을 읽다보니 처음 접하는 용어들이 종종 나왔는데 이에 대해 역자의 주석이 없는 경우가 더 많았다. 예를 들어 '구성보다 관례' 패턴에 대한 소개가 나왔는데 이 용어에 대해 간단히라도 소개하면 더 좋았을 것 같다. 또한, 173쪽에 보면 H2 웹 콘솔에 대해 설명하면서 "왜 그런지는 필자도 잘 모르겠지만..." 이라는 내용이 나오는데 이에 대해서 (찾을 수 있었다면) 역자가 설명을 적었으면 하는 아쉬움이 있었다. 번역서는 단순히 외국도서를 한국어로 번역한 것이 아니라 각종 용어에 대해 역자의 주석을 추가하여 독자들의 이해력을 돕고, 출시되는 시점에 맞추어 소스 코드가 정상적으로 실행되는지 검증하는 역할도 해야한다고 생각하기 때문이다. 가장 아쉬웠던 점은 실행되지 않는 예제가 있었다는 것이다.


예를 들어, 10장에서 소개한 HornetQ는 Deprecated 되어 실습 때 사용한 Spring CLI v.1.5.4 RELEASE에서는 해당 패키지를 설치할 수 없었다.


HornetQ 안녕

그리고 OAuth2 실습 때도 책에서는 spring -init 으로 프로젝트를 생성하면 pom.xml 에 spring-security-oauth2 가 추가될 거라고 설명이 되어있지만 실습해보면 코드에 추가 되지 않아서 혼란스러웠다. (258쪽 ~ 260쪽)

스프링 부트 실전 워크북 예제 오류


스프링과 스프링 부트를 어느정도 아는 사람이 실습을 했다면 분명히 스스로 해결이 가능했을 것이다. 다만, 책에 나온 실습을 따라했을 때 제대로 되지 않으면 독자는 기분이 상쾌하지 않은 게 사실이다.

4. 좋았던 점

책을 읽으면서 좋았던 점이 많았던 것도 사실이다. 앞에서 역자의 설명이 더 있었으면 좋겠다는 내용을 적었는데 실제로 책을 읽다보면 역자가 추가로 설명한 내용들이 많이 있어서 책을 읽는 데 큰 도움이 되었다. 그리고 5장은 스프링(Spring)과 스프링 부트(Spring Boot)를 비교하여 왜 스프링 부트가 생산성이 높은지 보여주는데 코드의 간결함, 특히 Groovy 코드의 깔끔함이 매우 인상깊었다. 그리고 하나의 책에 여러 내용을 담다보니 깊이 있는 내용까지 들어갈 수는 없었지만, 다양한 내용을 빠르게 훑을 수 있어서 앞으로의 학습 방향 설정에 도움이 되었다.


스프링 부트 일기장 앱

STS

스프링 부트 실전 워크북 H2

5. 총평

한 술에 배부를 수는 없는 것 같다. 아쉬웠던 점도 있었지만 그래도 스프링 부트(Spring Boot)를 빠르게 훑을 수 있었다는 점에서 전반적으로 만족한다. 무엇보다 스프링 부트는 웹 서버를 내장하고 있어서 예제 실행 시 번거로운 환경설정이 필요 없다는 점과 애플리케이션 배포 또한 ./mvnw package 명령어로 한 번에 된다는 점이 매우 인상적이었다.


스프링 부트(Spring Boot)를 빠르게 알고 싶은 사람이라면 이 책을 읽고 분명히 무언가 얻어갈 수 있는 것이 있을 것이다.


도서에 대한 추가 정보는 한빛미디어 공식 사이트를 참고하세요.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
신경망 첫걸음 - 수포자도 이해하는 신경망 동작 원리와 딥러닝 기초 머신러닝/딥러닝 첫걸음 시리즈
타리크 라시드 지음, 송교석 옮김 / 한빛미디어 / 2017년 4월
평점 :
장바구니담기


키워드: 신경망, AI, Artificial Intelligence, 인공지능, 첫걸음, 한빛미디어, 파이썬

1. 책의 주제

이 책은 <신경망 첫걸음>이라는 제목에 걸맞게 현재 세상에서 활약하고 있는 모든 인공지능 시스템(예: 아마존 Alexa, 애플 Siri 등)의 기본이 되는 신경망(Neural Network)의 원리를 소개한다.

책의 부제가 수포자도 이해하는 신경망 동작 원리와 딥러닝 기초라고 되어있다. 지금까지 봤던 어떤 인공지능 책보다 쉽고 명확하게 개념을 설명했다는 점에서 설득력 있는 부제라고 생각한다.

2. 책의 구성

이 책은 총 두 개의 장과 부록으로 이루어져있다. 첫 번째 장은 이론(Theory)에 대한 내용이고 두 번째 장은 Python을 통한 인공 신경망 학습실습을 다루고 있다. 세 번째 장은 지금까지 배웠던 내용보다 약간 더 깊이있는 내용을 가볍게 소개한다. 끝으로 부록에서는 수포자를 위한 미분(calculus)을 설명한다.

  1. 인공 신경망의 동작 원리
  2. 파이썬으로 인공 신경망 직접 만들기
  3. 더 재미있는 것들
  4. 부록

3. 신경망이란 무엇인가?

신경망(Neural Network)은 인간 뇌의 기본단위인 뉴런(Neuron)을 컴퓨터로 모델링한 것으로 현재 세상에서 활약하는 인공지능 기술의 근간이 되는 이론이다. 위키피디아는 아래와 같이 설명한다.

인공신경망(人工神經網, 영어: artificial neural network, ANN)은 기계학습과 인지과학에서 생물학의 신경망(동물의 중추신경계중 특히 뇌)에서 영감을 얻은 통계학적 학습 알고리즘이다. - 출처: 인공신경망(위키피디아)

4. 이 책을 추천하는 이유

필자가 AI를 배워야겠다고 생각한 게 이미 5년이 지났다. 그 동안 여러 가지 핑계로 학습하지 못하다가 이번 리뷰를 진행하면서 "이제는 더 이상 미룰 수 없다"라는 생각을 했다. 다행히도 이러한 결심을 하고 난 뒤 처음 만난 책이 한빛미디어에서 출간한 <신경망 첫걸음>이었다. 책 제목 그대로 정말 쉽다. 아마도 그 이유는 저자가 욕심을 부리지 않았기 때문인 것 같다. 가장 기본이 되는 내용을 수학 미분부터 파이썬 그리고 이론까지 AI 입문자를 대상으로 설명을 해서 큰 도움이 되었다.

만약 수학 때문에 AI를 배우고 싶지만 못 배운다고 생각하거나 어떤 책을 활용해야 할지 고민하는 분이 계시다면 이 책으로 시작하면 좋을 것 같다.

5. 아쉬운 점

전반적인 번역 품질이 좋고 다정다감하게 글이 작성되어있고 오타도 거의 없어서 쉽게 읽혔다. 다만, 간혹 번역투의 한글 표현이 보여서 아쉬웠다.

참고로 이 책은 온라인에서 무료로 볼 수 있다. 다만 영어라는 벽을 넘어서야 한다.

6. 총평

컴퓨터공학을 나오면 당연히 C언어와 JAVA를 기본으로 알 것이라고 사람들이 기대하는 것처럼 인공지능(AI) 또한 앞으로 기본지식이 될 것임에 틀림없다. 한 마디로 싫든 좋든 인공지능(AI)에 대한 기본 지식이 없으면 IT를 하는 사람의 앞 날은 그리 밝지 않을 것이다. 꼭 AI와 관련된 업무를 하지 않더라도 AI를 이해해야 하는 시대를 우리는 살게 될 것이다.

그렇다면 어떻게 해야할까? <신경망 첫걸음>을 읽으라. 저렴한 가격에 AI를 이해하는 여정을 시작할 수 있을 것이다.

P.S. 이 책에 대한 리뷰는 한빛미디어의 후원으로 작성되었음을 말씀드립니다.


댓글(0) 먼댓글(0) 좋아요(2)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
실용주의 소프트웨어 개발 - 현장에서 길어올린 소프트웨어 개발 베스트 프랙티스(Best Practices)
오병곤 지음 / 로드북 / 2017년 4월
평점 :
장바구니담기



1. 필자 소개

이 글을 쓰는 저자는 IT 전문가로 성장하기 위해 꾸준히 노력하는 사람이다. 초등학교 때 하이텔, 나우누리, 에듀넷, 키텔(?) 등의 PC 통신을 통해 프로그래밍을 알게 되었다. 컴퓨터로 무언가를 만들고 고치는 것이 좋아서 대학교에서는 컴퓨터공학(Computer Engineering)을 전공했다.

국내와 해외에서 짧고 굵게 다양한 경험을 했으며 현재는 금융공기업에 재직중이다.

2. 어떻게 읽게 되었는가

대학동기의 소개로 오병곤 대표님이 저술하신 <실용주의 소프트웨어 개발> 책이 출간 서평 이벤트를 한다는 것을 알게 되었다.

출간 서평 이벤트

이벤트 응모를 제안한 대학동기의 글

이벤트에 응모 후 당첨이 되어서 책을 수령하게 되었다.

2. 누구를 위한 책인가

<실용주의 소프트웨어 개발>의 독자는  소프트웨어 개발을 똑똑하게 하고 싶은 프로젝트 관리자(Project Manager, PM), 소프트웨어 개발이라는 숲 속의 나뭇가지가 아니라 전체 그림을 보고 싶은 개발자(Engineer)이다.

개인적으로는 공공기관에서 외주를 통해 소프트웨어를 도입하려는 업무 담당자가 이 책을 읽었으면 한다. 공공기관의 IT 부서에서 근무를 하면 신규 SW도입 또는 유지보수 계약 등 관리적인 측면에서 일을 많이 하는데 이 책을 통해 여러 가지 도움이 되는 내용을 많이 얻을 수 있었기 때문이다.

3. 책 구성

이 책은 아래의 세 가지 파트로 구성되어 있다.

  1. 기술(Engineering)
  2. 관리 및 지원(Management & Support)
  3. 기본(Fundamental)

각 파트는 현실, 우수사례, 산출물, 요약이라는 내용으로 이루어져있다. 각 파트 안의 주제가 적당한 분량으로 나누어져 있어 글이 잘 읽힌다.

4. 좋았던 점 세 가지

<실용주의 소프트웨어 개발>에는 실무에 활용할 수 있는 훌륭한 내용이 많이 있다. 그 중에서 필자에게 와닿았던 좋았던 점 세 가지를 추려보았다.

첫째, 개발에 대한 이야기만 하지 않았다는 점

이 책은 소프트웨어 개발을 다루지만 그렇다고 해서 소프트웨어 개발만 다루지는 않는다. 필자는 이 점이 가장 마음에 들었다. 특별히 들어가는 글인 ‘우리가 버려야 할 세 가지 관행에 대하여’는 큰 울림이 있었다.

여기서 말하는 세 가지 관행은 Word Hard, Work Fast, Work in The Same Way를 말한다. 대부분의 사람들이 자기보다 똑똑하지 않은 사람들이 만들어놓은 관행에 순응하며 산다. 이 글을 읽는 필자도 그러한 현실에 굴복하며 살 때가 많다. 이러한 사실이 참 안타깝다.

Work Hard를 먼저 살펴보자. 경제협력개발기구(OECD) 자료에서 발간하는 ‘1인당 평균 실제 연간 근로시간’을 보면 2014년 기준으로 한국이 연간 2,124시간을 일을 한다. OECD 회원국 평균 근로시간이 연간 1,770시간이므로 한국인 노동자는 연간 354시간, 주당 평균 6.8시간을 더 일한다. 야근을 안하면 열심히 일하지 않는다고 생각하는 꼰대문화, 고객 또는 관리자에게 내가 열심히 일하고 있음을 보여주기 위한 불필요한 행동 등 한국의 평균 근로시간이 긴 데는 여러 가지 이유가 있다. 프랑스에서 일할 때 필자의 관리자는 나에게 이렇게 말했다.

네가 야근을 하면 다음 날 업무효율이 떨어지니 가급적 야근은 안했으면 좋겠다. 일이 많으면 스케줄을 재조정하자.

대한민국은 과거의 성공방식이었던 Word Hard를 버리고 일의 양(Quantity)이 아니라 질(Quality)로 승부하는 Work Smart를 받아들여야 한다.

Work Fast도 문제다. 소프트웨어 개발은 건물을 짓는 건설업과 다르다. 한국의 ‘빨리빨리’문화를 잘 적용하면 큰 경쟁력이 될 수 있다는 사실에는 공감하지만 무리한 속도전은 얻는 것보다 잃는 게 더 많다. 이에 대한 내용은 필자의 생각을 더 적기보다는 책을 인용함으로써 마치겠다.

모든 일을 빠르게 처리할 수는 없다. 빠르게 처리하는 일은 대부분 부가가치가 높은 일이 아니다. 꼭 해야 하는 일이지만 품질과는 크게 상관없는 일은 속도를 내고, 우선순위가 높고 중요한 일은 일에 대해 깊이 생각하고 다각도로 방안을 찾고 집중해서 처리하는 것이 좋다. 빠름과 느림의 조화를 통해 일의 고삐를 쥐고 일의 성과를 만들어 내는 게 현명한 전략이다. – <실용주의 소프트웨어 개발>, 18쪽

Work in The Same Way는 다른 말로 매너리즘이라고 한다. 끝없는 야근을 종료하려면 지금 하는 일의 프로세스에 도전해야 하는데 대부분은 이러한 일을 하지 않는다. 순환보직을 하는 공공기관은 더 심한 것 같다. 힘들어도 어차피 2-3년 이면 다른 사람이 할 일이라는 생각에 개선할 생각을 하지 않는다. 개선을 하려면 힘이 드는데 그에 대한 적절한 보상이 없거나 미미할 때가 많기 때문이다. 하지만 환경만 탓할 수는 없지 않은가? 필자는 책을 읽으며 본인이 맡은 일에 대해서, 본인의 삶에 대해서 혁신할 수 있는 환경을 만들기로 결심했다. 어떻게(How)에 대해서는 더 생각해봐야겠지만 모든 변화는 확고한 결심에서 시작되니 곧 더 좋은 변화가 내 삶에 올 것임을 믿는다.

포스트 잇은 우연히 발견되었지만 그 우연이 가능한 3M의 환경은 웅ㄴ이 아니었다. – 짐 콜린스

둘째, 소프트웨어 개발 및 관리에 대한 모범사례

<실용주의 소프트웨어 개발>에는 소프트웨어 개발 및 관리에 대한 모범사례가 많이 수록되어 있다. 그리고 필요한 경우는 각 개발단계에서의 산출물의 목록과 템플릿도 제공한다.

예를 들어, 아래는 요구사항 종류에 대한 목록을 나열한 표이다.

요구사항 종류

필자는 현재 요구사항정의서를 작성중인데 요구사항 목록 뿐만 아니라 책 안에 있는 다양한 자료를 보면서 큰 도움을 받고 있다. 물론 기업에서 일을 잘하는 방법 중 하나는 기존의 잘 된 문서를 보면서 자신의 업무에 적용하는 것이다. 하지만, 거기에만 머무르면 앞에서 말했던 기존에 하던대로 업무를 하는 관행(Working in the same way)에 빠질 수 있다. 타 기관에서 작성한 문서, 소프트웨어 개발 도서 등 여러 가지 자료를 함께 참고하면서 이전보다 더 잘 일하면 더 좋지 않을까?

아키텍처 설계, 프로그램 명세서 작성, 테스트 설계, 대가 산정, 개발자 채용, 품질활동 등 공공기관 IT부서의 기획팀에서 일하면서 한 번쯤은 고민해봤을 내용에 대한 훌륭한 답변이 이 책 안에 가득하다.

우수한 조직은 비즈니스 목표 달성에 부합하는 측정활동을 수행한다. 아래 그림은 책 중간에 소개되었던 GQM(Goal, Question, Metric)이라는 도구인데 실무에 적용할 수 있는 훌륭한 내용이라 생각하여 이 포스트에도 추가했다. 올바른 목표와 질문을 하면 이에 대한 정량적인 데이터를 수집하여 올바른 의사결정을 하는 데 도움을 줄 수 있다.

GQM 도출 예

셋째, 일의 기본에 대한 내용

<실용주의 소프트웨어 개발>은 소프트웨어 기술과 관리 외에도 일의 기본(Fundamental)을 다룬다. 직장생활 2년 차인 필자에게 도움이 되는 내용이 많았다. 글을 읽으면서 그래도 나름대로 열심히 살고 있고, 꾸준히 발전하고 있다고 생각했는데 아니었다.

소프트웨어 개발에서 많이 쓰는 방법론은 ‘정보공학 방법론’도 아니고 ‘객체지향 방법론’도 아니다. 그것은 ‘일단 짜보고 고치기’ 방법론이다…(중략)… 일단 짜보고 고치기 방식은 기본적인 소프트웨어 개발 절차를 무시하고 우연에 맡기는 프로그래밍이다. – <실용주의 소프트웨어 개발>, 289쪽

소프트웨어 개발을 주먹구구식으로 하는 것처럼 내 삶도 주먹구구식으로 살고 있는 것은 아닌가라는 생각에 부끄러웠다.

무슨 일을 하든 그 일을 사랑하는 사람은 정성을 다하게 된다. 정성을 다하면 보답이 따른다. 일의 가치는 객관적으로 부여되는 것이 아니라 일에 대한 태도가 결정한다. – <실용주의 소프트웨어 개발>, 290쪽

5. 아쉬웠던 점 두 가지

이 책을 읽으면서 실무에 바로 적용할 수 있는 내용이 많았다. 개인적으로는 기술적인 부분보다는 관리적인 측면에서 큰 도움을 받을 수 있었다. 그렇다고 하더라도 이 세상에는 완벽한 책이 존재하지 않고, 한 사람을 안주하게 만드는 달콤한 칭찬보다는 계속 정진할 수 있도록 만드는 “배려깊은 말”이 중요하다고 생각하기에 감히 아쉬웠던 점을 적는다.

첫째, 각종 서식을 제공하지 않음

<실용주의 소프트웨어 개발>에서 소개하는 여러 가지 서식을 파일로 공개하면 더 실용적인 책이 되었을 것 같다. 기본적인 서식 파일을 제공하면 책을 읽은 독자가 좀 더 쉽게 현실에서 배운 지식을 활용할 수 있지 않을까?

둘째, 여러 가지 관리업무 자체를 체계적으로 관리할 수 있는 방법의 상세설명 부재

앞에서도 계속 언급했듯이 이 책에는 훌륭한 소프트웨어 관리기법을 소개한다. 하지만, 각 관리 방법을 적용하는 것은 가능하더라도 여러 가지 관리업무를 체계적으로 관리할 수 있는 방법에 대해서는 설명이 다소 부족한 것 같다.

물론 요구사항 및 결함관리를 위한 도구인 Redmine, 형상관리를 위한 Subversion, Git 등을 소개하고 있지만 단순한 언급에서 끝난다는 점이 아쉽다. 예를 들어 사용자의 요구사항은 발전해서 테스트 시나리오, 소스코드, 문서 등으로 발전한다. 요구사항은 역방향으로도 추적이 가능해야 한다. 알지만 이것을 어떻게 실천할 것인가? 특정 도구에 대한 설명이 어려웠다면 실무 경험이 풍부한 저자의 경험을 소개하는 것도 좋지 않았을까? 예를 들어, 파일의 이름은 이렇게 규칙을 정했고, 폴더 구조는 이렇게 만들어서 각 프로젝트를 관리했다는 식의 내용으로 말이다.

6. 총평

소프트웨어 개발 전 과정을 이해하고 싶고 이전보다 좀 더 나안 관리자, 개발자가 되고 싶은 사람이 이 책을 읽는다면 분명히 얻어가는 게 있을 것이라 생각한다. 따라서 이 책은 돈과 시간을 들여 읽을만한 가치있는 책이다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
마이크로서비스 아키텍처 구축 - 대용량 시스템의 효율적인 분산 설계 기법
샘 뉴먼 지음, 정성권 옮김 / 한빛미디어 / 2017년 3월
평점 :
구판절판



키워드: MSA, Microservice, Architecture, 마이크로서비스, 한빛미디어, 아키텍처

마이크로서비스 아키텍처(Microservice Architecture)에 대해 처음 들었던 건 2015년 1월로 기억한다. 당시 T아카데미에서 <iPhone Application Programming>을 들었는데 강사님이 이에 대해 언급을 했던 것으로 기억한다.

MSA를 이해하고자 O’Reilly에서 출간한 Building Microservices를 읽으려고 했지만 당장 필요한 기술이 아니다보니 미루고 미루다 계속 읽지 못했다. 다행이랄까. IT전문서적 출판사인 한빛미디어에서 한빛리더스 과제로 Building Microservices의 번역서인 <마이크로서비스 아키텍처>가 나와 강제로 읽을 수 밖에 없었다.

1. 책의 주제

제목처럼 이 책은 요즘들어 더 주목을 많이 받는 마이크로서비스(Microservice)를 구축하는 방법을 심도있게 다룬다. 단순히 MSA(Microservice Architecture)가 뭔지 설명하는 것에서 멈추는 것이 아니라 아키텍처 정의부터, 아키텍처를 설계하는 아키텍트의 역할 그리고 시스템을 어떻게 통합, 배포, 테스트하는지 등 MSA의 A부터 Z까지 다룬다. 책에서는 뮤직코퍼레이션이라는 가상의 회사를 통해 MSA로 설계하는 방법을 설명한다.

2. 대상독자

이상적으로는 컴퓨터 아키텍처에 관심이 많은 사람이면 실력에 관계없이 도움이 될 것 같다. 다만, 여러 차례 읽어야 저자가 전하고자 하는 MSA 실현을 위한 이론을 본인의 지식으로 내재화 할 수 있다. 현실적으로는 중급 이상의 실력을 갖춘 아키텍트를 꿈꾸는 소프트웨어 엔지니어가 대상 독자라고 생각한다.

3. 마이크로서비스란 무엇인가?

마이크로서비스(Microservice)는 작고 자율적으로 협업하는 서비스를 말한다. 흔히 소프트웨어를 설계할 때 “응집력(Cohesion)은 높이고 결합력(Coupling)은 낮춰야 한다”고 하는데 이러한 소프트웨어 공학의 원리를 적용한 서비스가 바로 마이크로서비스(Microservice)다. 만약 어떤 시스템이 ‘다른 변경 없이 특정 서비스만 변경하고 배포할 수 있다’면 그 시스템은 커플링이 없는 시스템이라 할 수 있다.

좋은 마이크로서비스의 핵심 원칙 강한 응집력 느슨한 결합력이다. – 4부 통합, 79쪽

이와 반대 되는 개념의 아키텍처는 모놀리식(Monolithic) 시스템이다. 이러한 시스템은 하나의 변경으로 전체 시스템이 재빌드가 되어야 한다. 또한, 하나의 장애로 전체 시스템이 먹통이 될 수 있는 구조를 갖고 있다. 아래 그림은 Martin Fowler의 블로그에서 가져온 그림인데 두 시스템을 잘 비교하고 있어서 인용했다.

Source: https://martinfowler.com/articles/microservices.html

4. 이 책이 좋았던 점

우선 이 책의 평점을 매기자면 5점 만점에 4.5점을 주고 싶다. 이유는 다음과 같다.

첫째, 마이크로서비스의 전체 생명주기를 잘 설명해서 이해에 큰 도움이 되었다. 과거에는 MSA로 서비스를 만들려면 코드와 DB 등을 분리하면 되겠구나라고 막연하게 생각했다면 이 책을 읽고 나서는 코드, DB 뿐만 아니라 CI(Continuous Integration)/CD(Continuous Delivery), 테스트 자동화, 통합된 모니터링, 보안, 복구 등 개발부터 운영까지 전 영역을 고려해야 함을 배울 수 있었다.

둘째, 친절한 각주가 책을 읽는 데 큰 도움이 되었다. 만약 같은 내용을 영어로 읽었다면 이해하지 못할 내용이 많았다. 이는 해석이 되지 않아서가 아니라 여러 가지 기술 및 경제 용어를 저자가 친절하게 각주로 설명을 했기 때문이다. 저자의 설명 덕분에 책을 더 집중해서 읽을 수 있었다.

셋째, 이론으로 끝내지 않고 실전에 사용할 수 있는 도구를 소개해서 앞으로 나아갈 방향을 알 수 있었다. 책을 읽으면 MSA가 결코 은총알(만능도구)이 아니라는 것을 알 수 있다. 오히려 책을 읽으면 읽을수록 ‘이론은 알겠는데 현실에 어떻게 적용하지?’ 라는 고민이 늘어났다. 저자는 이에 대한 해결책으로 구글(Google), 넷플릭스(Netflix), REA(호주 부동산 업체) 등의 사례와 각종 오픈 도구를 소개함으로써 이론을 현실에 적용할 수 있는 방법을 소개한다. 비록 각 도구의 실제 사용법에 대해서는 세세히 다루지 않았지만 각 도구를 어떠한 식으로 활용할 수 있는지 소개한다.

넷째, 참고할 수 있는 문서, 영상, 도서가 많다. 근래 읽었던 기술 서적 중 참고자료가 가장 많은 도서였다. 어떻게 보면 MSA가 간단한 주제가 아니라는 것을 반증하는 것 같다. 이 책을 읽으면서 내가 어떤 도서를 봐야 MSA를 구축하는데 필요한 지식을 얻을 수 있을지 파악할 수 있었다.

다섯째, 인간의 중요성을 강조한다는 점이다. 저자는 책에서 수 차례 인간적인 요소를 강조한다. 기술을 배우면 배울수록 그리고 자신이 좋아하면 좋아할수록 기술 너머에 사람이 있음을 종종 잊는 것 같다. 저자는 사람의 중요성을 계속 강조하는데 이 점이 참 마음에 들었다.

필자는 소프트웨어는 훌륭한 사람에 의해 만들어지는 것이라고 굳게 믿고 있다. 만약 여러분이 이 방정식에서 기술적인 측면만 걱정한다면 전체 그림의 절반 이상을 놓치게 된다. – 2부 진화적 아키텍트, 60쪽

보안을 잘 다룬다는 것은 대개 사람을 잘 이해하고 사람이 시스템과 일하는 방식을 잘 이해하는 것이다. 마이크로서비스에 관해 우리가 아직 논의하지 않은 인간적인 요소와 연관된 측면 중 하나는 조직 구조와 아키텍처 자체 사이의 상호작용이다. 보안과 마찬가지로 인간적인 요소를 무시하는 것은 중대한 실수가 될 수 있음을 알게 될 것이다. – 9장 보안, 260쪽

5. 이 책의 아쉬웠던 점

이 책의 아쉬웠던 점은 MSA의 국내 사례가 소개되지 않는다는 점이다. 번역서라도 국내 사례를 소개했다면 책의 설득력이 더 올라갈 수 있었을 것 같다. 이 리뷰를 작성하는 본인은 금융공기업에 재직중인데 MSA가 아무리 좋아도 이를 성공적으로 활용하는 곳이 없다면 리스크가 크다고 생각하여 도전하지 않는 게 본인이 일하는 곳의 리더십들이기 때문이다.

또한, MSA를 실습할 수 있는 파트가 전혀 없다는 점도 아쉽다. 아주 간단한 서비스라도 함께 실습하며 실제로 만들 수 있는 예제가 있었다면 훨씬 더 좋은 책이 될 수 있지 않았을까? 하나의 책이 이론과 실습 등 모든 것을 망라하는 것은 어렵겠지만 실습이 전혀 없었던 것이 아쉬웠던 것은 사실이다.

6. 총평

이 책은 ICBM(IoT, Cloud Computing, Big Data, Mobile)과 AI(Artificial Intelligence) 시대에 사는 우리에게 과거의 Monolithic 시스템에서 작은 서비스들의 집합인 Microservice 시스템으로 옮겨가야 한다고 주장한다.

변화는 불가피하다. 그냥 받아들여라. – 12장 종합 정리, 329쪽

만약 본인이 시스템 아키텍처에 관심이 많아서 공부를 하고 싶다면 이 책은 매우 적합한 책이라고 생각한다. 비록 실습할 수 있는 코드는 없지만 이 책을 읽으면 MSA를 많이 다뤄본 저자로부터 기술적인 측면, 관리적인 측면 그리고 인간적인 측면까지 아우르는 따뜻한 조언을 얻을 수 있기 때문이다.

훌륭한 소프트웨어 개발자 혹은 아키텍처가 되려면 기술도 잘 알아야 하지만 사람도 잘 알아야 하는 것 같다. 결국 일은 사람이 하기 때문이다. 그래서일까? 경험이 많은 저자는 사람의 중요성을 계속해서 강조함으로써 독자가 기술만능주의에 빠지지 않도록 수 차례 강조한다. 사람의 중요성을 강조하는 저자의 글로 이번 한빛리더스 서평을 마무리하고자 한다.

비록 이 책이 전반적으로 기술을 다루고 있지만 사람도 반드시 고려해야 한다. 왜냐하면 현재를 만들었고 미래를 만드는 주체가 바로 사람이기 때문이다. 현 직원의 비전에 대한 생각을 고려하지 않거나 그들이 지닌 능력에 대한 고려 없이 일을 어떻게 완료하는지에 관한 비전만 생각하면 대개 나쁜 곳으로 빠지기 쉽다. – 10장 콘웨이의 법칙과 시스템 설계, 274쪽

추신. 책에 대한 상세한 설명은 <한빛미디어 공식 홈페이지> 에서 확인하실 수 있습니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo