-
반응형
마이크로서비스란?
마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모의 독립적인 서비스로 구성되어 있는 경우의 소프트웨어 개발을 위한 아키텍처 및 조직적 접근 방식입니다. 이러한 서비스는 독립적인 소규모 팀에서 보유합니다. 마이크로서비스 아키텍처는 애플리케이션의 확장을 용이하게 하고 개발 속도를 앞당겨 혁신을 실현하고 새로운 기능의 출시 시간을 단축할 수 있게 해 줍니다.
- AWS -마이크로서비스란 소프트웨어를 구축하기 위한 아키텍처이자 하나의 접근 방식으로, 애플리케이션을 상호 독립적인 최소 구성 요소로 분할합니다
- Redhat -마이크로서비스란 단어가 사용되기 시작한지는 대략 10년정도 됬지만 널리 알려진지는 얼마 되지 않았다. 마이크로서비스가 없는 세상에서는 서비스/앱 개발에 대해서 백엔드를 위한 서버 인프라와 모바일 또는 웹 클라이언트로 크게 분류하고 백엔드는 layered architecture로 구현되고 있었다. 트래픽이 점차 늘어나게 되면 로드밸런서를 도입하여 어플리케이션 서버를 확장하거나 DB scale-up 전략이 일반적이었다고 생각한다.
페이스북, 트위터, 넷플릭스등 폭발적인 성장을 하는 서비스의 등장으로 엔지니어들은 빠른 비지니스 변화에 대한 수용과 서비스 배포주기, 몇백 몇천명 수준의 개발자들이 서로 의존성을 최소화하면서 서비스를 개발하고 확장 가능한 구조가 필요했을 것이다.
마이크로 서비스 구축 가이드
마이크로서비스는 명시적인 스펙이 아니다. 그래서 회사 마다 바라보고 적용하는 수준이 다를 수 있다. 그러다보니 자사의 서비스에 마이크로서비스를 도입하는게 맞는지 그리고 도입하게 된다면 맞는 구조란 무엇인지가 모호하게 느껴지는 것도 사실이다. 이 책은 마이크로서비스란 무엇인지로 시작하여 도입을 고민하고 싶다면 어떠한 기준이 필요한지 장단점에 대한 설명으로 시작하고, 이어서 온라인 강의 서비스를 구축한다는 가정으로 하나하나 섬세하게 마이크로서비스에 대한 적용 단계를 설명한다.
"3장 데이터베이스를 분리한다고?" 에서는, 모놀로식 대비 마이크로서비스로 서비스를 개발하게 될 때 경험하게 되는 문제점들을 나열하고 해결방안에 대해서 서술한다. 전반부에 이러한 내용들이 잘 정리되어 있는 점이 인상적이었고 설명을 매끄럽게 잘하는 점이 좋았다. 대략 3-4년전 마이크로서비스로의 전환 작업을 진행했을 때 직면했던 문제점들에 대해 잘 정리되어 있어 놀랐다.
자주 변하지 않는 데이터는 로컬 캐시를 도입함으로써 성능을 향상 시킬 수 있다. 마이크로서비스에서 API 일괄 요청에 로컬 캐시를 도입하게 되면 모놀로식의 단일 SQL(1번)과 거의 동일한 처리 속도가 나오게 된다. 아래는 목차로써 크게 1부, 2부로 나누게 되고 1부에서는 이론적인 개념들이 2부에서는 구축 예시들로 구성되어 있다.
- 1부. 마이크로서비스 아키텍처 이해하기
- 1장. 마이크로서비스 아키텍처란?
- 2장. 어떻게 적용해야 할까?
- 3장. 데이터베이스를 분리한다고?
- 2부. 마이크로서비스 아키텍처 적용하기
- 4장. 서비스 선정하기
- 5장. 서비스 설계 원칙
- 6장. 서비스 설계하기
- 장. 서비스 개발하기
다른 책에 비해 서비스 경계를 선정하는 방식에 대해 설명이 많다는 것 또한 꽤 인상적이다. 모놀리식에서 마이크로서비스로의 전환 과정에 대한 경험이 있다면 개별 서비스를 정의하는 것이 쉽지 않은 영역이란걸 알 것이다. 한편, 다른 책에서 흔하게 이야기하는 DDD(도메인 주도 설계) 기반 모델링에 대해서는 집중하여 다루진 않는다. 아니 오히려 DDD만이 마이크로서비스를 설계하는 방법이 아니라고 이야기 한다.
화면 요구사항, 기능 요구사항에 대한 예시를 기반으로 설계 구조를 그림으로 설명한다. 그 외 API 설계나 실제 코드 그리고 버전을 통한 유지보수 예시등 운용에 대한 다양한 설명을 엿볼 수 있다.
마무리
가벼운 마음으로 읽기 시작했는데 꽤 몰입해서 보게 된 책이었다. 마이크로서비스를 구축하려는 계획이 있는 사람이 이 책을 메인으로 시작하여 다른 책을 1-2권을 비교하고 설계 작업을 점진적으로 진행한다면 상당한 도움을 받을 수 있지 않을까하는 생각이 들었다. 안정적으로 서비스를 개발 및 보완할 수 있게 하는 길잡이 역할이 되어줄 것이다. 한편 백엔드 개발 경험 또는 운용 경험이 없다면 한번에 와닿지 않거나 이해하기 어려울 부분이 있을 수 있다.
Reference
- https://aws.amazon.com/ko/microservices/
- https://www.redhat.com/ko/topics/microservices
- https://microservices.io/
- https://learn.microsoft.com/ko-kr/azure/architecture/microservices/model/domain-analysis
- https://martinfowler.com/articles/microservices.html
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."
반응형 - 1부. 마이크로서비스 아키텍처 이해하기