Monolith VS. Microservice Architecture

E-ρ(rho) 이로·2022년 6월 7일
0

노드를 이용한 앱 구조에 대해 다룬 글을 읽었는데,
만들 application이 Monolitic한지, Microservice 기반인지를 생각하는 것이 중요하다는 글이 있었다.

그래서 두 architecture에 어떤 차이가 있는지 지금부터 살펴보도록 하겠다.

Monolith vs. Microservice


참고문헌 References

1. Microservices vs Monolithic Architecture (text)
2. MONOLITH VS MICROSERVICES ARCHITECTURE (youtube)

🗨 Monolith

monolith는 한글로 돌기둥이다.

즉, app이 하나의 단위(single unit)로 돌아가면 monolith이다.

대체로 database, client-side(HTML, JS 등 유저 인터페이스), server-side(HTTP 요청응답, 도메인별 로직, 등등)으로 구성되며 시스템을 변경하려면 개발자가 업데이트된 버전의 server-side app을 빌드하고 배포해야한다.

이런 시스템은 작은 팀에서 cost-effectively, 직관적으로 사용할 수 있다. 초기 단계에서 손쉽게 개발이 가능함을 의미하기도 한다.

그러나 단점도 존재한다!
모든 레이어가 너무 타이트하게(촘촘히) 연결되어있고, 재사용성이 낮다.

🗨 Microservice

독립적인 모듈 단위로 코드가 나눠져있다.

보통 IT 대기업들이 선호하고 지향하는 방향이라고 하니 보통 장점 위주로 나와있는 것 같다. monolith와 대비되는 특징들(어쩌면 장점)을 살펴보자.

이러한 아키텍쳐에서는 코드들이 독립적이기에 개발자들이 서로 다른 기술 스택을 사용해도 된다. 즉 전체 코드베이스를 이해하지 않아도 개발이 가능하다는 것이다! 하드웨어와 데이터베이스가 달라도 가능하다. AWS와 같은 클라우드 기술이 이러한 방식을 이끌어 나갈 것이라고 한다.

monolith보다는 큰 규모의 프로젝트에 유용하게 사용될 수 있다. 계속해서 프로젝트를 스케일업 해나갈 때, 클린 코드를 사용하고 싶을 때, 장기적인 수완을 생각했을 때 이러한 접근이 가능하다. 또, 외주(아웃소싱)를 맡기는 프로젝트에도 찰떡같이 쓰일 수 있다.

물론 microservice 아키텍쳐에도 단점은 있다. (그러니까 monolith를 쓰는데도 있겠지?)
기능이 모듈화 되어야한다. 또 서로 다른 기술 스택은 자동화에서 어려움을 겪을 수 있다. 데이터를 전송하는 과정에서 추가적인 computing power가 필요하다.

monolith에 비해 초기 단계가 쉬운 건 아니지만, 테스트와 코드 업데이트가 용이하다.
또, 기업(enterprise) 수준에서는 monolith보다 더 경제적인 솔루션이 될 수 있다.

0개의 댓글