한 기사에서 마이크로서비스에 대해 알아보기

원저자: NGINX

원본 링크: 한 기사에서 마이크로서비스에 대해 알아보기

재판 출처: NGINX 중국 공식 웹사이트


NGINX의 유일한 공식 중국어 커뮤니티(모두 nginx.org.cn) 

 마이크로서비스는 여러 개의 작은 구성 요소를 사용하여 복잡한 애플리케이션을 구축하는 방법입니다. 이 기사에서는 작동 방식, 장단점, 가져올 수 있는 이점에 대해 설명합니다.

마이크로서비스란 무엇입니까?

마이크로서비스는 각각 인증, 알림 또는 결제 처리와 같은 기능을 수행하는 여러 개의 작은 구성 요소를 사용하여 크고 복잡한 애플리케이션을 구축하기 위한 소프트웨어 아키텍처 접근 방식입니다. 각 마이크로서비스는 자체 코드 기반, 인프라 및 데이터베이스를 갖춘 소프트웨어 개발 프로젝트의 독립적인 단위입니다. 마이크로서비스는 함께 작동 하고 Web API 또는 메시지 대기열을 통해 통신하여 수신 이벤트에 응답합니다.

단순화된 마이크로서비스 아키텍처

단순화된 마이크로서비스 아키텍처

마이크로서비스에 관한 비디오

  • 마이크로서비스란 무엇입니까?

  • NGINX Plus는 BuzzFeed가 마이크로서비스로 마이그레이션하는 데 도움이 됩니다

자세한 설명 영상을 보시려면 여기를 클릭하세요 >>

마이크로서비스 아키텍처를 사용하는 이유는 무엇입니까?

전통적인 모놀리식 아키텍처에서는 애플리케이션의 모든 기능이 단일 코드 기반으로 구현됩니다. 이 접근 방식에는 몇 가지 단점이 있습니다.

  • 애플리케이션이 더욱 복잡해짐에 따라 한 개발자가 전체 코드 기반을 이해하기가 어려워집니다. 새로운 개발자가 시작하는 것도 어려울 수 있습니다. 한 가지 해결책은 다양한 개발자나 팀에 다양한 기능 모듈을 할당하는 것입니다. 이를 통해 개발자는 자신의 코드를 더 쉽게 제어할 수 있지만, 문제는 다른 모듈과의 종속성을 추적하기가 더 어렵다는 것입니다. 따라서 한 모듈의 변경 사항이 다른 모듈에 영향을 미칠 가능성이 높습니다.

  • 기능을 추가하거나 향상해야 하는 경우 전체 애플리케이션을 컴파일하고 테스트하여 변경 사항으로 인해 모듈 간의 호환성이 손상되지 않는지 확인해야 합니다. 그런 다음 전체 앱을 단일 바이너리로 배포해야 합니다.

마이크로서비스 아키텍처는 애플리케이션 기능을 여러 개의 독립적인 마이크로서비스(서비스)로 나누어 CI/CD를 단순화하는 데 도움이 됩니다. 마이크로서비스는 개발 속도가 더 빠르고 이해 및 유지 관리도 더 쉽습니다. 각 서비스는 해당 서비스에만 집중하는 팀에 의해 독립적으로 개발될 수 있습니다. 팀은 마이크로서비스에 가장 적합한 프로그래밍 언어, 개발 플랫폼 및 데이터베이스를 선택할 수 있습니다. 마이크로서비스는 배포를 더욱 단순화하기 위해 컨테이너로 패키징되는 경우가 많습니다.

마이크로서비스는 느슨하게 결합되어 있습니다. 즉, 다른 마이크로서비스의 내부에 의존하지 않습니다. API를 통해 통신합니다. 각 마이크로서비스에 의해 노출된 API가 이전 버전과 호환되는 한, 한 마이크로서비스에 대한 변경 사항은 다른 마이크로서비스에서 업데이트될 필요가 없습니다.

간단히 말해서, 마이크로서비스 아키텍처를 변경하려는 개발자는 단일 마이크로서비스 컨테이너 내에서 변경을 수행할 수 있는 반면, 모놀리식 아키텍처에서 작업하는 개발자는 전체 스택을 다시 작성하는 데 많은 시간을 소비해야 할 수 있습니다.

마이크로서비스 사용자 그룹

변화하는 비즈니스 요구 사항에 신속하게 대응하기 위해 기술 팀은 마이크로서비스 아키텍처로 전환했습니다. 개발자가 이러한 변화를 주도하고 있는 이유는 더 많은 기업이 개발자에게 앱과 제공 도구를 선택할 수 있는 권한을 부여하고 있기 때문입니다. 2020년에 실시된 NGINX 사용자 설문조사에 따르면 응답자의 절반 이상이 애플리케이션 일부 또는 전부에서 마이크로서비스를 사용하는 것으로 나타났습니다. 2022년에는 모놀리식 시스템에서 벗어나는 회사에서 근무하는 더 많은 NGINX 사용자가 부분적으로는 컨테이너 오케스트레이션이 허용하는 확장성 때문에 마이크로서비스를 채택한다고 말합니다.

마이크로서비스 101: 장점과 단점

마이크로서비스는 기존의 모놀리식 애플리케이션을 보다 유연하고 안전하며 효율적인 아키텍처로 전환하여 상당한 시간, 비용 및 리소스를 절약할 수 있도록 도와줍니다. 다음은 애플리케이션 성능과 디자인에 영향을 미칠 수 있는 마이크로서비스의 장단점을 요약한 것입니다.

이점:

  • 개발자는 독립적으로 서비스를 자유롭게 개발하고 배포할 수 있으므로 더 빠른 의사 결정이 가능합니다.

  • 작은 규모와 자율성 덕분에 마이크로서비스 기반 접근 방식은 여러 팀이 동시에 서로 다른 서비스를 구현할 수 있기 때문에 개발 주기를 단축할 수 있습니다. 팀 간의 종속성은 종종 줄어들거나 심지어 제거됩니다.

  • 마이크로서비스는 컨테이너에 쉽게 배포할 수 있어 오버헤드를 줄이고 다양한 환경에서 이식성을 향상시키는 데 도움이 됩니다.

  • 마이크로서비스는 CI/CD 도구와 쉽게 통합되므로 개발자는 자동화된 CI/CD 파이프라인과 같은 최신 DevOps 방식을 구현할 수 있습니다.

  • 각 서비스는 일반적으로 탄력적이므로 애플리케이션을 쉽게 확장하고 필요에 따라 "크기 조정"할 수 있습니다.

  • 마이크로서비스는 구축, 테스트, 유지 관리가 더 쉽습니다.

  • 서비스는 비즈니스 기능을 중심으로 구성되고 구현됩니다.

  • 개발자는 특정 서비스에 가장 적합한 기술을 채택할 수 있습니다.

  • 더 쉬운 오류 격리 – 하나의 마이크로서비스가 실패하더라도 다른 마이크로서비스는 계속해서 실행될 수 있습니다.

결점:

  • 개발자가 내결함성을 줄이고, 네트워크 대기 시간을 줄이고, 다양한 프로그래밍 언어를 처리하고, 여러 서비스에 걸쳐 로드 밸런싱을 수행해야 하기 때문에 마이크로서비스 아키텍처는 복잡성을 증가시킵니다.

  • 마이크로서비스 문제 해결은 분산 특성으로 인해 번거롭고 복잡할 수 있습니다.

  • 애플리케이션의 마이크로서비스 수를 늘리면 통합 및 관리 노력이 늘어납니다.

  • 여러 데이터베이스 처리

API는 마이크로서비스인가요?

요컨대, 아니오. API 자체는 마이크로서비스가 아닙니다. 그러나 API는 애플리케이션 내의 통신 메커니즘으로 마이크로서비스 아키텍처에 점점 더 통합되고 있습니다. 마이크로서비스의 기능은 API 엔드포인트 집합으로 노출되며, 다른 마이크로서비스는 해당 엔드포인트에 대한 API 호출을 통해 해당 기능을 호출합니다.

마이크로서비스를 실행하기 위해 컨테이너를 사용하는 이유는 무엇입니까?

컨테이너화 플랫폼을 사용하면 개발자는 인프라 제약에 관계없이 가장 효율적인 방식으로 마이크로서비스를 격리, 확장 및 배포하는 동시에 사용자 중단을 최소화할 수 있습니다. 단일 로드 밸런싱 및 트래픽 라우팅 서버 클러스터가 애플리케이션 앞에 배포되는 시나리오를 생각해 보세요. DNS에 게시된 고정 공용 IP 주소를 사용하면 클라이언트는 이 안정적인 진입점으로 요청을 보낼 수 있으며, 이 진입점은 적절한 컨테이너로 전달됩니다. 이러한 컨테이너가 추가되거나 제거된 경우 내부 주소를 업데이트하여 이러한 요청을 새 IP 주소로 보내면 됩니다. DNS를 통해 내부적으로 이러한 주소를 게시할 수도 있습니다.

마이크로서비스 사례

마이크로서비스는 규제가 심한 산업에서 원활하고 안전한 마이그레이션을 가속화합니다.

규제가 엄격한 산업에서 활동하는 다국적 기업은 진화하는 표준과 모범 사례를 준수하기 위해 규정된 일정에 따라 시스템을 업그레이드해야 합니다. 회사의 애플리케이션 포트폴리오는 시스템을 통해 매일 수백만 건의 거래를 처리합니다. 수년에 걸쳐 회사는 오픈 소스 업그레이드 및 타사 보안 플러그인 통합 중에도 업계 요구 사항을 준수해 왔습니다. 그러나 최근 업그레이드에서 회사는 플러그인 상호 배제 문제로 인해 몇 가지 어려움을 겪었습니다. 회사는 데이터 센터에서 AWS 퍼블릭 클라우드로의 전환을 고려했지만 보안 플러그인 문제로 인해 마이크로서비스 아키텍처로 전환하게 되었습니다. 이 솔루션은 비용이 저렴하고 회사가 보안 규정 준수를 신속하게 달성하는 데 도움이 됩니다.

마이크로서비스 마이그레이션에 대해 자세히 알아보려면 고객 성공 사례를 읽어보세요.

블로그 게시물

성공 사례 및 사용 사례

참고자료

리소스 추천

마이크로서비스 2023년 6월 안건 콘텐츠와 모든 과정 재생을 무료로 보려면 여기를 클릭하세요 .


NGINX의 유일한 공식 중국어 커뮤니티(모두  nginx.org.cn)

더 많은 NGINX 관련 기술 정보, 대화형 Q&A, 일련의 강좌 및 이벤트 리소스:  오픈 소스 커뮤니티 공식 웹사이트 WeChat 공식 계정  | 

"Qing Yu Nian 2"의 불법 복제된 리소스가 npm에 업로드되어 npmmirror가 unpkg 서비스를 중단하게 되었습니다. Zhou Hongyi: Google에 남은 시간이 많지 않습니다. time.sleep(6) 여기서는 어떤 역할을 합니까? 리누스는 "개사료 먹기"에 가장 적극적입니다! 새로운 iPad Pro는 12GB의 메모리 칩을 사용하지만 8GB의 메모리를 가지고 있다고 주장합니다. People's Daily Online은 사무용 소프트웨어의 마트료시카 스타일 충전을 검토합니다. "세트"를 적극적으로 해결해야만 Flutter 3.22 및 Dart 3.4 출시가 가능 합니다. 'ref/reactive'가 필요 없는 Vue3의 새로운 개발 패러다임, 'ref.value'가 필요 없음 MySQL 8.4 LTS 중국어 매뉴얼 출시: 데이터베이스 관리의 새로운 영역을 마스터하는 데 도움 Tongyi Qianwen GPT-4 수준 메인 모델 가격 인하 97% 증가, 1위안 200만 토큰
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/5246775/blog/11184822