Microservice

전은평·2023년 4월 25일
0

Microservice란?

한 프로젝트를 여러 작은 서비스로 분리하여 개발하고 운영, 배포하는 방법이다.


지금까지 강의에서 배우고 내가 적용했던 방식은 Microservice 이전의 방식인 모놀로식 아키텍처(Monolitick Architecture)이다.

모놀로식 아키텍처(Monolitick Architecture)
: 역할별로 개발을 하고, 개발이 완료되면 하나로 묶어서 배포하는 방식

모놀로식 아키텍처를 이용하게 되면, 하나의 프로젝트를 개발하고, 테스트하고, 빌드하기 때문에 단순하다는 장점이 있다!

반면, 여러 모듈들이 함께 있기 때문에 작은 부분에 문제가 생기게 되면 다른 부분에 영향을 주게 된다. 예를 들어, 일부 서비스 서버에 문제가 생기게 되면, 전체 기능이 엉켜버리는 문제가 발생할 수 있다.
또한 서비스의 규모가 점점 커질수록 하나의 프로젝트로 함께 묶는 것이 점점 버거워지고 복잡해지게 되는데, 이러한 문제점을 해결하기 위해 나온 것이 마이크로서비스 아키텍처(Microservice Architecture) 다!


Microservice

앞서 언급했듯이 Microservice란 한 프로젝트를 여러 작은 서비스로 분리하여 개발하고 운영, 배포하는 방법이다.

요즘 규모가 큰 기업들에선 대부분 Microservice 방식으로 개발을 진행한다고 배웠는데, 어떤 점이 매력적이었기에 다들 이용하는걸까?

우선 Microservice는 하나의 프로젝트를 각각 모듈로 분리했기 때문에 팀별로 독립적으로 개발 가능하다. 그렇다는 말은 여러가지 다양한 언어를 구사하는 개발자들로 팀이 구성이 되어도 협업이 무리없이 가능하다는 뜻이다.

또 배포 전 테스트 하면서 최적화 단계(build)를 거치는데, 기존의 모놀리식 구조에서는 수정이 있을 때마다, 소스코드 전체를 다시 build해야하기 때문에 시간이 오래 걸리지만, Microservice 구조를 사용하게 되면 해당 소스코드만 따로 build하면 되기 때문에 시간적인 면에서 이득을 볼 수 있다.

또한 서비스를 운영하면서 맞닥들일 수 있는 장애로부터 조금은 더 자유로워 질 수 있다는 장점이 있다. 이 점이 가장 큰 매력이라고 생각한다.

기존 모놀리식 구조에서는 장애 발생시 서버가 죽게 되면 모든 API가 사용 불가능했지만, 마이크로서비스로 분리하게 되면 어떠한 기능에 장애가 생겨도 해당 API만 사용이 불가능하고, 다른 기능에는 문제없이 서비스를 운영할 수 있다.

그렇다면 모든 서비스에 무조건적으로 Microservice를 적용해야할까?

그건 아니다!

마이크로서비스 아키텍쳐를 적용했을 때에는 전체적인 기술 복잡도와 그에 따른 비용이 증가 할 수 있으므로 이를 잘 판단하여 서비스의 구조를 결정해야 한다.

오히려 규모가 작은 회사에서는 MSA(Microservice Architecture)를 사용하다가, 기술 복잡도가 높아 실패하는 사례가 다반사라고 하니, 상황에 맞춰 적절한 서비스 구조를 선택하는게 정답! 인 것 같다

참고자료
: 코드캠프 수업자료
: https://www.nginx.com/blog/introduction-to-microservices/

profile
`아는 만큼 보인다` 라는 명언을 좋아합니다. 많이 배워서 많은 걸 볼 수 있는 개발자가 되고 싶습니다.

0개의 댓글