모놀리식 앱 (Monolithic Apps)

개념

모놀리식 애플리케이션(monolithic application)은 단독으로 배포 가능한 프로그램에 모든 기능을 포함한다. 이것은 보통 애플리케이션을 만들 때 선택할 수 있는, 가장 간단한 시작 형태라 할 수 있다. 그러나, 애플리케이션의 복잡성이 올라가는 경우, 모놀리스(monoliths)의 유지 및 관리가 더욱 어려워질 수 있다. 동일한 코드베이스(codebase)에서 작업하는 개발자가 많아질수록, 변경 사항의 충돌 가능성과 개발자 간의 대인 커뮤니케이션의 필요성이 증가한다.

다루는 문제

애플리케이션을 마이크로서비스(microservices)로 전환하면 운영 오버헤드가 증가한다. 덧붙여 말하면, 테스트, 배포 및 지속 실행해야 하는 보다 많은 항목이 존재하게 된다. 제품의 생명주기(Lifecycle) 초기에는 제품이 성공적이라 판단될 때까지 이러한 복잡한 것을 뒤로 미루고 모놀리식 애플리케이션을 구축하는 것이 유리할 수 있다.

문제 해결 방식

잘 설계된 모놀리스는 간결함을 유지할 수 있는데 이는 애플리케이션을 구동하는 가장 간단한 방법이기 때문이다. 모놀리식 애플리케이션의 비즈니스 가치가 성공적으로 입증되면 마이크로서비스로 분해될 수 있다. 가치가 입증되기 전에 마이크로서비스 기반 앱으로 만드는 것은 엔지니어링 노력을 투입하는 측면에서 시기상조 일 수 있다. 애플리케이션 자체에 가치가 없다면 관련 노력이 낭비되는 것이라 볼 수 있다.