소프트웨어 아키텍처 패턴 중 하나로, 애플리케이션을 작은 독립적인 서비스들로
분할하는 개념을 가지고 있습니다. 이러한 서비스들은 서로 독립적으로 배포, 확장,
관리될 수 있으며, 각각의 서비스는 특정 비즈니스 기능을 수행합니다.
작은 규모: 마이크로서비스는 작고 한정된 범위의 비즈니스 기능을 수행합니다. 이러한 작은 규모의 서비스들은 개별적으로 관리하고 이해하기 쉽습니다. 또한 개별 서비스들은 독립적으로 개발, 배포, 확장될 수 있습니다.
독립성: 각 마이크로서비스는 독립적인 프로세스로 실행되며, 데이터베이스, 라이브러리, 기타 종속성을 포함합니다. 이는 개별 서비스들이 다양한 기술 스택과 독립적인 개발 수명주기를 가질 수 있음을 의미합니다.
통신과 경계: 마이크로서비스는 네트워크를 통해 상호 작용합니다. 주로 가벼운 프로토콜을 사용하여 서비스 간의 통신이 이루어집니다. 이는 서비스 간의 결합도를 낮추고 유연성과 확장성을 높입니다.
확장성: 마이크로서비스 아키텍처는 각 서비스를 독립적으로 확장할 수 있는 장점이 있습니다. 이는 부하 분산을 위해 필요한 서비스만 확장할 수 있으며, 전체 애플리케이션의 성능과 확장성을 향상시킵니다.
유연성과 기민성: 마이크로서비스는 특정 비즈니스 기능을 담당하기 때문에 변경이나 확장이 필요한 경우 해당 서비스만 수정하면 됩니다. 이는 개발자들이 빠르게 실험하고 혁신을 추구할 수 있는 유연성과 기민성을 제공합니다.