본문 바로가기
용어 사전

마이크로서비스(Microservices)란?

by 테크원 2023. 5. 8.
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)

microservices

마이크로서비스(Microservices)란?

마이크로서비스는 소프트웨어 개발 방법론 중 하나로, 큰 애플리케이션을 작은 독립적인 서비스로 분할하여 개발하는 방식입니다. 이러한 작은 서비스는 각각의 역할을 수행하며, RESTful API를 통해 다른 서비스와 통신합니다. 이 방법론은 큰 애플리케이션을 작은 조각으로 나누어 개발함으로써 개발 및 유지보수가 용이하며, 확장성과 안정성을 향상시키는 장점이 있으며 클라우드 기술과 함께 사용될 때 더욱 강력한 성능을 발휘합니다.

 

마이크로서비스는 일반적으로 작은 팀이 개발하며, 각각의 서비스는 서로 분리되어 있어 다른 서비스에 대한 의존성이 적습니다. 이러한 구조는 서비스 간의 결합도를 줄이고, 독립적인 배포 및 확장이 가능합니다. 또한 서비스를 독립적으로 스케일링 할 수 있어 더욱 효율적인 자원 활용이 가능합니다.

 

하지만 마이크로서비스를 도입하기 위해서는 더 많은 인프라스트럭처와 개발자의 노력이 필요한데 각각의 서비스는 자체 데이터베이스, 서버, 네트워크 및 보안을 관리해야 하며, 다른 서비스와의 통합을 위한 API 관리도 필요합니다. 따라서 마이크로서비스를 도입하기 전에 기존 애플리케이션을 분석하고, 구조를 재설계하는 등의 과정이 필요합니다.

 

마이크로서비스의 특장점

높은 확장성

마이크로서비스는 작은 규모의 서비스 단위로 나누어져 있으므로 필요한 서비스만 확장하여 사용할 수 있습니다. 이를 통해 자원의 효율적인 사용과 높은 확장성을 가진 서비스를 구현할 수 있습니다.

높은 가용성

마이크로서비스 아키텍처에서는 각 서비스가 독립적으로 동작하므로 다른 서비스의 장애로 인해 전체 시스템이 중단되는 것을 방지할 수 있습니다. 또한 서비스의 모니터링과 장애 처리를 개별적으로 수행할 수 있으므로 높은 가용성을 유지할 수 있습니다.

높은 유연성

마이크로서비스는 작은 규모의 서비스로 나누어져 있으므로 개별적인 서비스의 수정, 업그레이드 및 배포가 쉽습니다. 이를 통해 빠르게 변경이 필요한 경우에도 손쉽게 대응할 수 있습니다.

기술 다양성

서비스 간의 결합도가 낮기 때문에 각 서비스는 다른 기술과 프로그래밍 언어를 사용할 수 있습니다. 이를 통해 새로운 기술과 기술적인 혁신을 적극적으로 도입할 수 있습니다.

높은 확장성

서비스 간의 결합도가 낮기 때문에 개별 서비스의 확장성이 높습니다. 이를 통해 자원의 효율적인 사용과 높은 확장성을 가진 서비스를 구현할 수 있습니다.

빠른 개발

각 서비스는 작은 규모의 독립적인 단위이므로 개발 속도가 빠르고, 작은 규모의 서비스로 나누어져 있기 때문에 테스트와 배포가 쉽습니다.

높은 재사용성

마이크로서비스는 작은 규모의 서비스 단위로 나누어져 있기 때문에 각 서비스는 독립적으로 재사용될 수 있습니다. 이를 통해 비즈니스 로직이나 데이터 모델 등을 공유하여 개발 비용을 절감할 수 있습니다.

 

마이크로서비스의 예시

마이크로서비스 아키텍처는 Netflix, Uber, Amazon 등 다양한 분야에서 적용되고 있습니다. 이 중 Netflix는 2009년부터 2015년까지 모놀리식 아키텍처에서 마이크로서비스 아키텍처로 전환하는 과정을 거쳤습니다. 현재 Netflix는 수백 개의 마이크로서비스로 구성되어 있으며, 각 서비스는 RESTful API를 통해 통신하고 AWS 클라우드에서 실행됩니다.

 

이 아키텍처의 장점으로는 서비스 중 하나가 실패하더라도 전체 시스템에 영향을 미치지 않는 것이라고 할 수 있습니다. Netflix는 카오스 엔지니어링을 통해 장애에 대한 저항력을 테스트하고 개선할 수 있게 되었으며 서비스의 수요가 증가하면 해당 서비스를 독립적으로 확장할 수도 있게 되어 자동화된 도구를 사용하여 수천 개의 인스턴스를 관리하고 배포합니다. 그리고 개발팀이 각각의 서비스에 대한 책임과 권한을 가지고 자신들이 선택한 기술 스택과 프로세스를 사용하여 빠르게 개발하고 배포할 수 있다는 장점도 가지고 있습니다.

 

마이크로서비스와 SOA의 차이점

마이크로서비스와 SOA는 둘 다 서비스 중심적인 소프트웨어 설계를 지향하는 방법이지만 몇 가지 차이점이 있습니다.

 

첫째, 서비스 오너십 측면에서, 마이크로서비스는 하나의 독립된 팀에서 개발하고 관리합니다. 반면에 SOA는 여러 팀, 예를 들면 기획팀, 공통기능개발팀, 개발팀 등이 중앙에서 공유 미들웨어를 이용하여 개발합니다.

 

둘째, 서비스 크기 측면에서, 마이크로서비스는 작은 기능에만 집중하여 비즈니스 단위보다는 좀 더 작은 서비스 단위로 식별됩니다. 반면에 SOA는 여러 개의 서비스가 모여서 하나의 비즈니스 흐름을 이루므로, 비즈니스 단위로 식별되며 크기가 더 큽니다.

 

셋째, 서비스 공유 측면에서, 마이크로서비스는 각각의 서비스가 제공하는 API를 보고 필요할 때 호출하여 사용합니다. 반면에 SOA는 UDDI라는 서비스 저장소나 미들웨어를 두고 통합하여 여러 개의 서비스를 공유합니다.

 

넷째, 서비스 통신 측면에서, 마이크로서비스는 RESTful API를 이용하여 가벼운 수단으로 통신합니다. 반면에 SOA는 WSDL 명세와 SOAP 프로토콜을 이용하여 통신합니다. 만약 WSDL 명세가 변경되면 이를 참조하는 클라이언트들이 모두 영향을 받게 됩니다.

 

마지막으로 저장소 측면에서, 마이크로서비스는 각 서비스가 별도의 저장소를 가지므로 다른 서비스가 직접 호출하지 못하도록 캡슐화하고 제한합니다. 이는 분리와 대체가 쉽게 가능합니다. 반면에 SOA는 서비스 상 저장소의 분리를 고려하지 않아 통합 저장소를 사용하는 경우 서비스를 분리하기가 쉽지 않습니다.

 

마이크로서비스의 향후 전망

마이크로서비스의 미래 전망은 매우 밝습니다. 현재 기업들은 전통적인 모놀리식 애플리케이션보다 마이크로서비스 아키텍처를 채택하고 있으며, 이는 애플리케이션 개발과 유지보수의 효율성을 향상시킬 뿐만 아니라 확장성과 내구성을 높이는 장점을 가지고 있습니다.

 

Red Hat의 리포트에 따르면, 2023년까지 전 세계 기업의 86%가 마이크로서비스 아키텍처를 사용할 것으로 예상됩니다. 클라우드 네이티브 애플리케이션 개발의 핵심 요소로서 마이크로서비스가 강조될 것입니다. 클라우드 네이티브 애플리케이션은 컨테이너화, 서비스 메시, DevOps 등의 기술을 활용하여 빠르고 안정적으로 배포하고 운영할 수 있는 애플리케이션으로, 개발의 핵심 요소로서 마이크로서비스가 강조될 것입니다. 향후 마이크로서비스는 머신 러닝, 인공지능, 블록체인 등 다양한 기술과 결합하여 더욱 발전할 것으로 예상됩니다.

 

반응형

'용어 사전' 카테고리의 다른 글

옴니채널(Omnichannel)이란?  (2) 2023.05.09
LiDAR(Light Detection and Ranging)란?  (0) 2023.05.09
xR(Extended Reality)이란?  (0) 2023.05.09
블록체인(Blockchain)이란?  (0) 2023.05.08
HCI(Hyper-Converged Infrastructure)란?  (0) 2023.05.08
MaaS(Mobility as a Service)란?  (0) 2023.05.07
IPoE(IP over Ethernet)란?  (0) 2023.05.07
NGN(Next-Generation Network)이란?  (0) 2023.05.07