모놀리식(Monolithic)

superwalk·2025년 1월 30일

모놀리식 아키텍쳐 무슨 뜻?

하나로 된 거대한 덩어리..

프론트엔드 + 백엔드 서버가 하나로 된 아키텍쳐 = 모놀리식

모놀리식 아키텍쳐란?

애플리케이션의 모든 기능이 하나의 코드베이스와 하나의 실행 환경에서 동작하는 전통적인 소프트웨어 설계 방식

즉, 프론트엔드, 백엔드, 데이터베이스, 비즈니스 로직이 모두 하나의 애플리케이션 안에서 실행되지.
대표적인 예로 과거의 Spring MVC, Ruby on Rails, Django, Laravel 같은 웹 프레임워크 기반의 애플리케이션

모놀리식 아키텍처의 특징

1.하나의 코드베이스와 단일 배포 단위

애플리케이션이 하나의 프로젝트로 구성되며, 배포할 때도 한꺼번에 배포됨.
예를 들어, app.jar 같은 단일 파일 형태로 배포하는 경우가 많음.

2.모든 기능이 하나의 애플리케이션 내부에서 처리

사용자의 요청을 처리하는 웹 서버, 비즈니스 로직, 데이터베이스 액세스 로직 등이 모두 하나의 애플리케이션 내에서 실행됨.
API 호출 없이 내부 함수 호출만으로 다양한 기능을 실행할 수 있음.

3.단일 데이터베이스 사용

일반적으로 하나의 데이터베이스를 사용하여 모든 기능이 해당 데이터베이스에 접근함.

4.동기 방식으로 기능이 연결됨

예를 들어, 쇼핑몰 애플리케이션에서는 로그인, 주문, 결제, 배송, 고객 서비스 등의 기능이 하나의 애플리케이션 내부에서 실행됨.

모놀리식 아키텍처의 장점

✅ 개발 및 배포가 단순함

모든 코드가 한 프로젝트 안에 있기 때문에 설정이 비교적 간단하고, 개발이 쉬움.
하나의 서버만 실행하면 되므로 인프라 관리가 간단함.
✅ 성능이 좋음

같은 메모리 공간에서 모든 기능이 실행되기 때문에 API 호출 없이 함수 호출로 빠르게 동작함.
네트워크 통신이 필요 없어서 REST API나 gRPC를 사용할 때보다 성능이 좋음.
✅ 트랜잭션 관리가 쉬움

하나의 데이터베이스에서 모든 기능을 처리하기 때문에, 여러 서비스 간 데이터 일관성을 유지하기가 용이함.
✅ 디버깅과 테스트가 간단함

모든 기능이 하나의 프로젝트에 있기 때문에, 로컬 환경에서 쉽게 테스트하고 디버깅할 수 있음.
✅ 초기 개발 속도가 빠름

소규모 프로젝트나 MVP(Minimum Viable Product) 개발에서는 빠르게 결과물을 만들 수 있음.

모놀리식 아키텍처의 단점

❌ 규모가 커지면 유지보수가 어려움

코드베이스가 커질수록 코드 의존성이 복잡해지고, 변경이 어려워짐.
작은 기능 하나를 수정해도 전체 애플리케이션을 다시 빌드하고 배포해야 함.

❌ 확장성이 제한적임
특정 기능의 부하가 커져도 해당 기능만 별도로 확장할 수 없음.
서버를 확장하려면 전체 애플리케이션을 복제해야 하므로 리소스 낭비가 발생함.

❌ 배포 속도가 느림

하나의 애플리케이션으로 모든 기능을 운영하기 때문에 배포할 때 전체 시스템을 재시작해야 하는 경우가 많음.
배포 중 장애가 발생하면 서비스 전체가 영향을 받을 가능성이 큼.

❌ 기술 스택 변경이 어려움

예를 들어, 기존에는 Java로 개발했는데 일부 기능을 Python으로 변경하고 싶다면 어렵거나 불가능함.
최신 기술 도입이 힘들고, 오래된 기술을 유지보수해야 할 수도 있음.

❌ 팀 단위 개발 비효율

여러 개발자가 하나의 코드베이스에서 작업하면 충돌이 발생하기 쉬움.
여러 팀이 같은 코드베이스를 공유해야 해서 개발 속도가 느려질 수 있음.

모놀리식 아키텍처가 적합한 경우

✔ 소규모 프로젝트 또는 스타트업 초기 단계

처음부터 마이크로서비스 아키텍처를 도입하면 복잡도가 증가하기 때문에, 빠르게 MVP를 개발하려면 모놀리식이 유리함.

✔ 작은 팀에서 개발하는 프로젝트

몇 명의 개발자가 작업하는 경우, 굳이 프론트엔드/백엔드를 분리할 필요가 없음.

✔ 배포가 자주 필요하지 않은 애플리케이션

배포 속도가 문제가 되지 않는 경우에는 모놀리식이 오히려 관리가 편할 수 있음.

✔ 트랜잭션 일관성이 중요한 경우

하나의 데이터베이스에서 모든 기능을 처리해야 하는 경우, 모놀리식이 유리함.

결론

소규모 프로젝트에서는 모놀리식 아키텍처가 유리하고, 대규모 프로젝트에서는 마이크로서비스 아키텍처가 적합함.

초기에는 모놀리식으로 개발한 후, 서비스가 성장하면 마이크로서비스로 전환하는 전략도 많이 사용됨.

profile
걷기 좋아하는

0개의 댓글