관리 메뉴

JIE0025

마이크로서비스는 무엇일까? (개념, 구조, 장단점) 본문

백엔드

마이크로서비스는 무엇일까? (개념, 구조, 장단점)

Kangjieun11 2023. 8. 15. 00:08
728x90

 

✅ 개요

이전부터 팀 프로젝트는 거의다 모놀리식으로 만들어졌었다. 

이후 인턴 생활 중 마이크로서비스에 사용될 프로젝트를 진행하게 되었고

이에 대해 공부해야지 하다가 이제야 글을 쓴다. 

 

 

MSA에 대해 좀 더 자세히 공부해보고, 구조를 이해해보자

(실습은 천천히 해보고 글 올려야지 😊)

 


 

✅ 마이크로서비스 ? 

애플리케이션 개발 기법중 하나로

기능을 조합해 앱을 실현하는 기술이다.

 

  • 소규모 기능을 서버 서비스로 구현한 것
  • 기능들을 결합해 다른 기능/서비스를 실현할 수 있다.

 

 

1. 각 요소가 독립 되어있다.

> 각 요소는 특정 비즈니스 기능을 수행한다.

 

2. 요소별로 통신을 해서 기능/ 데이터를 교환한다.

> API를 통해 서로 통신한다.

 

 

✍️ 요약

  • 모놀리식은 애플리케이션을 하나의 SW로 구축하는 반면,
  • MSA는 기능 요소별로 모듈을 개발해 연계/조합함으로써 하나의 App을 구축한다. 

 

 

🎨 그림 Monolith  &  Micro Service  

그림으로 이해하는 네트워크 구조와 기술

 

 

🤔 왜 이런 방식이 현대사회에 와서 급 성장했을까?

1. 모놀리식의 한계

사람 한명이 컴퓨터를 하나 이상 들고 다니는 현대 사회에선

애플리케이션의 규모가 커지고, 확장에 유연하게 대응할 수 있어야한다. 

 

Application의 규모를 확장함에 있어 

하나의 SW로 구현하는 모놀리식 방법은 효과적이지 못하다.

 

한개의 기능을 수정하는데 전체를 컴파일하고 테스트해야하기 때문이다.

 

  • 개발이 복잡해지면서 개발 속도도 느려진다.
  • 확장하기 어렵다.
  • 한개의 모듈에 오류가 있으면 전체 애플리케이션이 불안정해진다.
  • 프레임워크와 언어 변경시 비용과 시간이 많이 소요된다. (기술이 제한될 가능성이 크다)
  • 약간의 수정이 일어날 경우 전체를 다시 배포해야한다. 

 

2. 성능의 부족

이전에는 네트워크와 하드웨어도 성능상 충분하지 못했다.



 

3. 서버 가상화 기술 (Cloud) 의 발달

이전에는 서버 가상화 기술이 덜 발달하여 

마이크로 서비스를 제공하는 서버/ 시스템의 보급이 용이할 수 없었다.

 

 

 

 

✅ 마이크로서비스의 장단점

 

⏺ 장점

각 서비스는 전문화된다.

한개의 서비스에만 집중해 개발할 수 있으므로 더 높은 품질의 SW를 제공할 수 있다.

 

 

⏺ 한계

1. 복잡성

독립적인 서비스 사이에서 각 모듈간 인터페이스를 신중하게 개발해야한다.

만약 한개의 서비스가 응답되지 않을 경우가 존재할 수도 있으니, 이에 대한 방어코드도 작성해야한다.

 

Ex) 만약 재고관리 서비스가 응답하지 않을 때, 주문 처리 서비스는 어떻게 반응해야하는지 고민해야한다.

 

2. 테스트의 번거로움

의존성이 있는 서비스는 미리 확인해야한다.

통합테스트 역시 중요하다. 한 서비스가 다른 서비스와 잘 작동하는지 확인해야한다.

 

Ex) 주문 처리 서비스는 재고관리 서비스에 의존하고 있다.  (주문이 완료되려면 재고관리서비스의 응답을 받아야하기 때문이다)

이 때 의존하는 서비스에 대해 Mock이나 Stub을 이용해주면 테스트를 간소화 할 수 있다.

 

3. 배포의 복잡성

서비스간 조정이 필요할 수 있다.

여러 마이크로서비스는 함께 작동해야하므로 각 서비스는 올바른 순서와 방식으로 배포되어야한다. 

만약 어떤 서비스가 변경되었을 때 해당 서비스가 배포될 경우

다른 서비스에 어떤 영향을 주게 될 지 모르기 때문이다. 

 

따라서 하나의 서비스를 배포하는데, 다른 서비스와의 호환성을 확인해야한다.

 

 

 

>>>>  이런 복잡성들은 자동화 도구를 통해 해결할 수 있다고한다.

(아마 SRE 직무의 역할 아닐까 싶다)

 

 

 

 


References

 

그림으로 이해하는 네트워크 구조와 기술

https://www.yes24.com/Product/Goods/120241473

 

그림으로 이해하는 네트워크 구조와 기술 - 예스24

쉽고 재미있게 시작하는 네트워크!우리 일상에 없어서는 안 될 인터넷과 그 바탕을 이루는 이더넷 및 TCP/IP는 모두 네트워크라는 범주에 속한다. 네트워크는 오늘날 여러 분야에서 널리 활용되

www.yes24.com

 

https://www.atlassian.com/ko/microservices/microservices-architecture/microservices-vs-monolith

 

마이크로서비스와 모놀리식 아키텍처 비교 | Atlassian

모놀리식 애플리케이션은 하나의 통합된 유닛인 반면, 마이크로서비스 아키텍처는 독립적으로 배포할 수 있는 소규모 서비스의 모음입니다.

www.atlassian.com

 

https://giljae.medium.com/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-microservices-architecture-%EC%9D%98-%EC%9E%A5%EC%A0%90%EA%B3%BC-%EB%8B%A8%EC%A0%90-7c45615cfe1a

 

마이크로서비스 아키텍처(Microservices Architecture)의 장점과 단점

마이크로 서비스는 대규모 소프트웨어 프로젝트를 마이크로 단위의 모듈로 분리하여 loosely-coupled한 구조로 만들고 API를 통해 서로 통신합니다.

giljae.medium.com