모놀리식 VS 마이크로서비스 아키텍쳐

2021. 9. 19. 18:14IT기초/IT기본용어

Django를 기반으로 개발을 할때 서비스를 개발할때 전통적으로 옛날의 사람들은 모든 서비스를 한 곳에 모아서 개발하였다. 이때 기획단계에서 모든 서비스와 기능을 하나로 규합해서 서비스를 개발하자 라는 것이 최초의 개발 풍조였다. 하지만 기술이 발전과 보안, 유지 등의 수없이 다양한 이슈로 인해 서비스를 각각 잘게 나누어서 개발하는 분위기가 만들어 졌다. 전자는 전통적인 아키텍쳐인 모놀리식(Monolithic==하나의 라는 의미를 가진다.)이라고 표현하며 후자는 마이크로서비스 라고 명한다.

 

파이선 기반의 웹, 풀스텍 프레임 워크인 장고

 

이 시간에는 각 서비스의 장 단점에 대해 알아보는 시간을 가져보겠다. 먼저 전통적인 방식인 모놀리식 아키텍쳐의 장 단점이다

 

모놀리식 아키텍쳐의 장점
end - to - end(끝 단 끼리의 서비스) 테스트가 굉장히 용이하다 

 ==> 모든 서비스를 한 곳에서 만들기 때문에 모니터링이 굉장히 편하며 과정을 점검하기가 쉽다.
빠르고 간단하게 서비스를 만들고 구축할 수 있다.

 ==> 한 곳에서 하기 때문에 초기개발 속도가 굉장히 빠르다.

모놀리식 아키텍처의 단점
조그마한 수정사항 등이 있어도 전체를 다시 빌드, 배포 해야하는 번거로움이 있다.
그렇기에 유지-보수가 굉장히 귀찮고 힘들다.
 ==> 하나에 모든것을 관리하기 때문에 한줄의 기능을 점검하고 코드를 변경하게 되면 다른 곳에서 문제가 생길 수 도 있게 된다.
서비스가 점점 커 져서 덩치가 커지게되면 구동시간도 딜레이가 생기며 이로 발생하게 되는 일부분의 오류가 기능 전체에 영향을 미칠 수 있다.
각 기능에 따라 다른 언어를 선택할 수 없다.
 ==> 개발자 JS로 특정 서비스를 만들었다고 가정해 보자. 그런데 더 좋은 기술을 파이선으로 구현할 수 있을때, 파이선을 통해서 그 기능을 추가해야하는것이 아니라 JS를 통해서 파이선과 유사한 서비스를 직접 만들어서 구현해야 하는 번거로움이 있다.

 

즉 요약하자면 소규모 서비스 이거나 아주 빠르게 개발을 해서 배포해야할 경우 모놀리식 아키텍쳐를 활용해 구축하게되면 굉장히 편하다는 것을 알 수 있다. 하지만 중형 이상의 서비스를 구축하게 되면 관리면에서 굉장히 디메리트가 발생하게 된다.

 

이러한 단점을 극복하기 위해 마이크로 서비스 아키텍쳐가 나타나게 되었는데 이 서비스의 장 단점에 대해 알아보자.


마이크로서비스 아키텍쳐의 장점
유지 보수가 굉장히 용이하다.

 ==> A라는 기능에서 문제가 나타났다면 그 문제는 온전히 A라는 기능 안에서 해결해야 하는 문제이기에 A만 확인하면 된다.

거대한 서비스도 빠르게 수정할 수 있게 된다.

 ==> 모놀리식의 경우 모든 코드를 확인해야 하지만 마이크로 서비스의 경우 코드를 하나하나 다 뜯어볼 필요가 없다.
각 기능에 따라 다른 언어를 선택하고 사용할 수 있다.
 ==> 자바를 쓰다가 파이선을 써도 상관없다.

 

마이크로서비스 아키텍쳐의 단점
모니터링이 힘들다.

 ==> 서비스가 크고 세분화 되어있기 때문에 분리된 서비스끼리의 상호작용을 일일이 체크하기가 힘들다.
 ==> 이로 인해 end - to - end 서비스 구동이 불편하다.

 

두 서비스를 도식화 해 보면 다음과 같다.

 

모놀리식(좌)와 마이크로서비스(우) 아키텍처