마이크로서비스 도입 안티패턴과 과제

path from: https://martinfowler.com/bliki/MonolithFirst.html

마이크로서비스를 목표로 삼는 안티패턴

가장 흔한 안티패턴 중 하나는 마이크로서비스 도입 자체를 목표로 삼는 것 많은 조직들이 마이크로서비스가 왜 필요한지, 비즈니스 목표와 어떻게 연계되는지 명확히 이해하지 못한 채 서둘러 도입하려고 함

결과:

해결책:

조직의 준비 부족

조직의 준비 부족은 마이크로서비스 도입의 성공을 방해하는 "암흑물질 같은 힘"으로 볼 수 있음 많은 조직들이 마이크로서비스를 효과적으로 구현하고 관리하는 데 필요한 문화, 기술, 관행이 부족

조직 준비의 핵심 측면:

  1. 엄격한 설계 기술: 개발자들은 잘 정의된 서비스 경계와 API를 만들기 위한 강력한 소프트웨어 설계 기술을 갖춰야 ㅎ함
  2. 학습 문화: 마이크로서비스 도입에는 실험과 학습이 수반되므로, 조직은 변화를 수용하고 실패를 용인하는 문화가 필요합니다.
  3. DevOps와 팀 토폴로지: 성공적인 마이크로서비스 구현을 위해서는 DevOps 관행을 채택하고 느슨하게 결합된 자율적인 개발을 위한 팀 구성이 필요합니다.

해결책:

기술에만 집중하는 안티패턴

또 다른 흔한 안티패턴은 마이크로서비스의 기술적 측면, 특히 배포 인프라에 과도하게 집중하는 것 이는 종종 근본적인 아키텍처와 조직적 과제를 해결하지 않은 채 복잡한 도구와 플랫폼에 조기 투자하는 결과를 초래

결과:

해결책:

더 많을수록 좋다는 안티패턴

"더 많을수록 좋다"는 안티패턴은 조직이 서비스가 많을수록 항상 더 좋다고 잘못 믿어 지나치게 세분화된 마이크로서비스 아키텍처를 만들 때 발생

결과:

해결책:

걷기도 전에 날려고 하는 안티패턴

이 안티패턴은 기본적인 소프트웨어 개발 관행을 먼저 숙달하지 않은 채 마이크로서비스를 도입하려는 시도를 뜻함

핵심 기본 사항:

결과:

해결책:

산발적 도입 안티패턴

산발적 도입은 일관된 전략이나 로드맵 없이 마이크로서비스를 무계획적으로 구현하는 것을 뜻함

결과:

해결책:

엔드-투-엔드 테스팅 함정

마이크로서비스 아키텍처에서 엔드-투-엔드 테스팅에 과도하게 의존하면 "분산 모놀리스"를 초래하고 마이크로서비스의 많은 이점을 상쇄할 수 있음

결과:

해결책:

결론

마이크로서비스 아키텍처 도입은 상당한 이점을 제공할 수 있지만, 신중한 계획, 준비, 실행이 필요 이러한 흔한 안티패턴을 피하고 조직적, 기술적 과제를 해결함으로써 기업은 마이크로서비스 도입 성공 가능성을 높일 수 있음

주요 시사점:

  1. 마이크로서비스 도입을 명확한 비즈니스 목표와 연계
  2. 문화적, 기술적으로 조직을 준비
  3. 기술보다 서비스 설계와 분해에 먼저 집중
  4. 관리 가능한 수의 서비스로 시작하여 점진적으로 발전
  5. 기본적인 소프트웨어 개발 관행 숙달
  6. 일관된 도입 전략과 로드맵 개발
  7. 광범위한 엔드-투-엔드 테스팅보다 서비스 수준 테스팅 우선
What Else?
inflearn react api server buy me a coffee