스프링 부트로 개발하는 MSA 컴포넌트 - 마이크로서비스를 올바르게 도입하기 위한 스프링 부트 사용법!
김병부 지음 / 길벗 / 2022년 11월
평점 :
장바구니담기





『하나, 책과 마주하다』


파이썬에 이어, 배운 것이 아까워 기억을 상기시키고자 보는 책 중 한 권이다.

마이크로서비스 아키텍처는 아키텍처에 대한 이해가 매우 중요하다.

실제로 구현하기도 어렵고 여러 시스템이 유기적으로 얽혀 있어 운영이 쉽지 않기 때문이다.

오랫동안 MSA 컴포넌트를 개발한 베테랑 개발자가 MSA 환경에서 컴포넌트를 짤 때 알아야 할 것들을 실무 관점으로 풀어낸 책이 바로 여기에 있다.


저자, 김병부는 광운대학교 무선네트워크 연구실에서 석사 학위를 받았다.

지금은 NHN Dooray에서 백엔드 시스템을 개발하고 있으며, 동시에 NHN Academy에서 미래의 개발자에게 기술을 전파하는 즐거움도 느끼고 있다.




Ⅰ 마이크로서비스 아키텍처


마이크로서비스 아키텍처는 아마존, 넷플릭스 같은 해외 유수 기업들이 사용하는 아키텍처이다.

반복되는 서비스 실험과 평가의 연속이었다.

그 과정 속에서 급진적으로 폭발한 사용량을 안정적인 서비스로 제공하기 위해 여러 기술과 운영 방법을 적용시켜 왔다.

이러한 서비스는 곧 MSA로 발전하였고 지금은 큰 규모의 시스템도 안정적으로 서비스를 제공하고 있다.

서비스 규모가 점점 커져 가고 새롭게 기능이 추가될수록 점점 더 복잡해질 수밖에 없다.

개발자는 기존 기능과 더불어 새롭게 추가된 기능까지 관리해야 하니 시스템을 유지 보수하는 시간이 새로운 기능을 개발하는 시간보다 더 걸리기도 하는데, 이러한 경우를 해결하기 위해 애플리케이션 코드를 리팩터링하거나 시스템 구조를 변경해 시스템 복잡도를 낮추어야 한다.

모든 시스템은 하나 이상의 컴포넌트로 구성되어 있다.

API 컴포넌트나 저장소 컴포넌트처럼 각자 역할이 있다보니, 시스템 구조를 변경하기 위해서는 시스템과 서비스를 잘 이해하는 사람이 시스템 구조를 설계해야 한다.

즉, 시스템을 이루는 컴포넌트와 컴포넌트 사이의 관계를 잘 정리하여 명확하게 나누어야 한다.

이렇듯, 시스템 컴포넌트를 나누고 합치는 디자인을 하는 사람을 아키텍트라고 하며 컴포넌트와 컴포넌트의 관계를 정리한 것을 소프트웨어 아키텍처라고 한다.

서비스 기능을 하나의 API 컴포넌트에서 처리하는 구조를 모놀리식 시스템 아키텍처라고 하며 기능을 분리하여 두 개 이상의 API 컴포넌트에서 처리하는 구조를 분산 처리 시스템 아키텍처라고 한다.

마이크로서비스 아키텍처는 분산 시스템 아키텍처 중 하나로 마이크로서비스 아키텍처는 다량의 요청을 처리하고 애플리케이션 복잡도를 낮추어 주는 이점이 있다.

실제로 구현하기도 어렵고 여러 시스템이 얽혀 있다보니 운영이 쉽지 않은 복잡한 아키텍처다.

그래서 개발 단계나 운영 단계에서 아키텍처에 대한 이해가 매우매우 중요하다.


마이크로서비스 아키텍처는 기능 위주로 나뉜 여러 애플리케이션이 있고 각각 독립된 데이터 저장소를 사용한다.

기능으로 분리된 애플리케이션들은 미리 정의된 인터페이스를 통해 서로 유기적으로 동작하며 웹이나 APP 클라이언트에 일관된 형태의 API로 제공된다.

마이크로서비스 아키텍처의 특징을 대표하는 키워드가 있는데 대규모 시스템, 분산 처리 시스템, 컴포넌트들의 집합 그리고 시스템 확장 등이다.

이러한 특징들이 서비스 지향 아키텍처와 공통점이 많다.

두 아키텍처 모두 엔터프라이즈 시스템이라는 대규모 시스템을 구축하기 위한 것이지만, 마이크로서비스 아키텍처가 서비스 지향 아키텍처의 설계를 따르면서 발전시킨 최신 아키텍처라고 말하기도 한다.




Ⅱ 프레임워크와 스프링 부트


애플리케이션을 만들 때 프레임워크없이 개발하는 것은 매우 힘들기에, 프레임워크는 용도에 맞는 일반적 기능들을 보편적 방식으로 제공한다.

프레임워크에서 제공하는 기능을 개발자가 사용하면 편하고 쉽게 애플리케이션을 개발할 수 있으며 이는 개발자의 생산성 향상으로 이어진다.

프레임워크는 상황에 따라 직접 만들 수도 있고 이미 만들어진 오픈 소스 프레임워크 혹은 상업 제품 프레임워크를 사용할 수 있다.


스프링은 개발하기 어렵고 복잡한 EJB를 대체하기 위해 설계되었다.

스프링은 여러 프레임워크를 제공해 애플리케이션 형태와 기능에 따라 구분할 수 있다.

스프링에서 가장 중요한 프로젝트는 스프링 프레임워크 프로젝트로, 모든 스프링 프레임워크의 기본 프레임워크이자 가장 중요한 프레임워크이므로 스프링 프레임워크 프로젝트를 '스프링'이라고도 한다.



경영학만 공부해서는 살아남을 수 없는 시대인 것 같아 자연스레 IT 쪽으로 눈길을 돌린 것도 사실이다.

마케팅과 세무 쪽으로도 돌릴 수 있었지만 세무사는 더 이상 전망이 밝지 않다는 조언을 따른 것도 한몫했었다.

그런데 인생이라는 흐름이 어떻게 흘러갈지 모른다는 어른들의 말씀이 딱 맞았다.

마음 다잡고 울면서 배웠는데… 공백기가 생기면서 자연스레 잊혀졌으니…….

이렇게 버리기에는 안 되겠다 싶었다.

그래서 요즘 틈나는 대로 열공중인데 이 시리즈로 IT 뿐만 아니라 외국어, 경영 관련 도서를 몇 권 더 소개할 예정이다.

바로 바로 【배운 것이 아까워 기억을 상기시키고자 보는 책】 시리즈이다.


어제 올렸던 『파이썬 웹 프로그래밍 기초편』에 이어 이 책을 선택했던 이유는 딱 교재의 정석 같아서였다.

JAVA와 SPRING을 주로 사용했었기에, 프로젝트 하나 만들어 보기 전에 MSA를 제대로 알고 이해하고 싶었다.

시중에 워낙 교재가 많다 보니 고민이 많았는데, 일단 실무에 적용시킬 수 있는 핵심적인 내용이 필요했었다.

그 만족감을 충족시켜 준 책이, 바로 『스프링 부트로 개발하는 MSA 컴포넌트』이다.


스프링 5에 이어 곧 6 버전까지 출시될 예정이라고 하니 새로운 기능이 끊임없이 추가되고 있음을 다시금 느꼈다.

새로운 것이 끊임없이 나오기 때문에 개발자라면 평생 공부가 숙명이라고 한 교수님의 말이 떠오른다.

저자는 스프링 프레임워크와 스프링 부트에 대한 경험을 토대로 이 책을 집필했다고 한다.

즉, 지금까지 쌓아온 노하우가 고스란히 쌓여 있어 실무에게 적용하기 아주 '딱' 이란 의미이다.

나처럼 배웠지만 샤르르 까먹은 이들과 스프링 부트 개발을 처음 시작하는 이들부터 내용을 보충하고 공부가 조금 더 필요하다고 느끼는 개발자들에게 특히 추천한다.





댓글(3) 먼댓글(0) 좋아요(27)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
persona 2022-12-18 22:39   좋아요 2 | 댓글달기 | URL
저 배울 때는 soa가 최신이었는데 ㅎㅎㅎ msa라는 것이 다 나오네요. 재밌어보입니다.

하나의책장 2023-02-24 20:59   좋아요 2 | URL
오오, 정말요? 혹시 페르소나님 IT 전공하셨나요?
전 비전공자인지라 해박하진 않지만 꾸역꾸역 넣어보기 위해 열심히 읽어봤는데 생각보다 재미있었어요!ㅎㅎ

persona 2023-02-24 21:16   좋아요 2 | URL
예제가 잘 되어있는 책이면 굳이
전공하지 않아도 아니 오히려 재미있게 공부할 수 있는 것 같아요. 전자공학 전공입니다. ㅎㅎㅎ