소프트웨어 아키텍처(모놀리스, 마이크로 서비스)

황에녹·2023년 10월 31일
0

리액트 플로우(React Flow) 라이브러리를 학습하던 중,
"리액트 플로우는 노드 기반 애플리케이션을 구축하기 위한 라이브러리다"
라는 설명을 보게 됐다.

노드 기반 애플리케이션이 뭔지 알아보던 중,
앱을 개발하는데에도 방식들이 있다는 것을 알게 되었다.

1. 모놀리스 (또는 모놀리식) 아키텍처

하나의 프로젝트 안에 모든 기능을 담아 만드는 방법이다.

▶ monolith : mono(하나) + lith(돌) = 하나의 덩어리로 이루어진 규모가 큰 구조물.

5~6월, 약 한 달간 진행했던 부트캠프의 메인프로젝트도 모놀리식으로 개발했었다.

이와 같이, 모놀리식 아키텍쳐는
짧은 시간 내에 개발할 때에 이점이 있다.
대부분 프로젝트의 시작은 모놀리식으로 진행한다.

하지만 프로젝트의 덩어리가 커졌다면, 머리가 아파질 수 있다.
새로운 기능을 추가하거나 업데이트를 하고 싶지만,
코드를 약간만 수정해도 다른 기능들에 문제가 생길 수 있다.
새로운 개발자가 들어와 기능을 손보려고 해도
해당 프로젝트의 모든 코드를 이해하고 있어야 비로소 손을 쓸 수 있다.

따라서, 프로젝트의 덩어리가 커진다면
마이크로 서비스 아키텍쳐를 활용하는 것이 좋은 방법이 된다.

2. 마이크로 서비스 아키텍처

각각의 기능들을 각각의 프로젝트로 서비스를 운영하는 것.

마이크로(micro)는 '작다'의 의미를 갖고 있는 것처럼,
'마이크로 서비스'는 프로젝트의 기능들을 따로 빼내어
개발하는 방식을 말한다.

따라서, 모놀리스 방식으로 개발했을 때와 다르게
프로젝트의 덩어리가 크더라도
기능들을 분리해서 관리하기 때문에
쉽게 수정할 수 있고, 업데이트 할 수 있으며 오류를 잡기에도 편하다.

그렇다고 모든 프로젝트를 마이크로 서비스 아키텍쳐 방식을
선택해서 개발하는 것은 좋지 않을 수 있다.
개발 난이도는 낮을지라도, 각각의 서비스를 따로 관리해야 하기 때문에
운영 난이도가 높다.

따라서 모놀리식과 마이크로 서비스의 장단점을 이해하고,
자신의 프로젝트에 맞게 잘 활용하는 것이 중요하겠다.
(모놀리식과 마이크로 서비스를 병합해서 사용할 수도 있다.)

profile
개발, 영화, 음악

0개의 댓글