마이크로서비스 시작하기

마이크로서비스는 최신 소프트웨어를 개발하는 아키텍처 접근 방식입니다. 각 핵심 기능 또는 서비스는 독립적으로 구축 및 배포되는 관련 비즈니스 컨텍스트를 나타냅니다. 마이크로서비스는 애플리케이션을 개발 및 유지보수하는 데 민첩성을 제공하고 레거시 소프트웨어 개발에 따른 모놀리식 접근 방식의 대비를 나타냅니다. 오늘날 애플리케이션 현대화는 곧 마이크로서비스를 의미한다고 할 수 있습니다.

마이크로 서비스에 대한 자세한 내용은 모놀리식 아키텍처, 마이크로 서비스 아키텍처 도입 고려사항, 통신 메커니즘, 12팩터 배포 방법론, Kubernetes의 배포, 데이터 지속성, 서비스 메시, 마이크로 서비스 설계를 위한 모범 사례 등을 알아봅니다.

마이크로 서비스의 이점

  • 간소화된 배포

    지속적인 통합과 지속적인 배포를 지원하여 서비스용 Blue-green 배포 모델을 지원함으로써 새로운 기능 출시 시간을 단축할 수 있습니다.

  • 필요에 따라 성능 확장

    서비스당 컨테이너 또는 데이터 플랫폼을 독립적으로 확장하여 해당 기능의 요구를 충족합니다.

  • 설계를 통한 고가용성

    전체 응용 프로그램에 영향을 주지 않고 독립 서비스를 교체하거나 폐기합니다. 개별 서비스 오류는 전체 응용 프로그램을 손상시키는 것이 아니라 성능 저하로 인해 정상적으로 처리됩니다.

Oracle Cloud Infrastructure(OCI)에서 마이크로 서비스를 구축하는 방법을 알아봅니다.

Oracle Converged Database 이점

데이터 중심 마이크로서비스의 중요한 측면은 다양한 데이터 유형을 배포하고 컨테이너에서 여러 데이터베이스를 지원하며 자율 관리 기능을 제공하는 데이터 관리 플랫폼을 배포하는 것입니다. OCI의 Oracle Autonomous Database는 지능적인 데이터 기반 마이크로 서비스를 구축하기 위한 간편한 배포를 제공합니다.

마이크로 서비스 기반 애플리케이션 전반의 트랜잭션 일관성 달성

Oracle Transaction Manager for Microservices(MicroTx)는 분산 트랜잭션을 활성화하여 Kubernetes 및/또는 기타 환경에 배포된 다중 언어 마이크로서비스들의 일관성을 보장함으로써 애플리케이션 개발 및 운영을 간소화시켜 줍니다.

마이크로서비스를 위한 완전한 개방형 플랫폼

애플리케이션 현대화를 위해 여러 기술을 통합하여 최적의 멀티 클라우드 마이크로 서비스 기반을 구축해야 합니다. Oracle LiveLabs에서는 Oracle의 도구 및 기술에 액세스하여 다양한 실습과 워크샵을 실행할 수 있습니다. 이 워크샵에서는 Oracle과 함께 개방형 기술을 사용하여 배포 유연성을 제공하는 보다 간단한 아키텍처를 구축하는 방법을 보여줍니다. Oracle LiveLabs에서 Autonomous Database, Helidon, Micronaut, MicroTx, WebLogic Server, Java, Docker, Kubernetes, Istio Service Mesh 등 OCI에서 사용할 수 있는 클라우드 및 하이브리드 구성요소를 사용하여 마이크로서비스를 구축합니다. 마이크로서비스 여정을 시작하기 위해 일체형 엔터프라이즈 앱을 현대화하거나 이 경로를 이미 시작한 경우 단순화할 수 있는 실습이 여러 개 있습니다.

개방형 플랫폼 테이블

Oracle Converged Database를 사용한 데이터 기반 마이크로서비스

이 Oracle LiveLab는 최신 개발 스택으로 데이터 아키텍처의 단순성을 강조하는 GrabDish이라는 모바일 식품 배달 애플리케이션을 구축합니다. 관계형, 텍스트, 공간, 그래프 및 메시징 시스템을 위한 별도의 시스템을 통해 전통적으로 업계에서 람다 및 카파 아키텍처로 채택된 특수 용도의 데이터베이스의 복잡성과 대조적으로, Oracle Converged Database를 사용하여 데이터 기반 마이크로서비스를 구축하는 단순성이 뛰어납니다. 이 실습은 새로운 마이크로 서비스를 설계하기 위해 개발자와 설계자를 위해 제작되었습니다. 또한 DBA가 애플리케이션 현대화 프로젝트에서 Oracle Database의 역할을 이해할 수 있도록 도와줍니다. Autonomous Database, 도커 컨테이너가 있는 Kubernetes 클러스터, Oracle Advanced Queuing and Transactional Event Queues 및 Helidon은 Kiali, Jaeger, Prometheus 및 Grafana로 설정된 추적 및 모니터링과 함께 관계형, JSON, 공간 및 그래프 데이터로 작동하는 Java, Node.js 및 Python 마이크로서비스를 표시하는 데 사용됩니다. 서비스 패턴(예: 이벤트 소싱, CQRS 및 SAGA)이 설명됩니다.

Oracle Converged Database를 사용한 데이터 기반 마이크로서비스

Oracle Transaction Manager for Microservices를 통한 마이크로 서비스 전반의 트랜잭션 일관성

마이크로서비스 아키텍처가 인기를 얻고 있기 때문에 개발자는 각 마이크로서비스가 일반적으로 자체 데이터베이스 또는 기타 리소스를 보유하므로 데이터 일관성과 관련된 문제를 겪는 경우가 많습니다. MicroTx는 트랜잭션에 참여하는 다양한 데이터베이스의 상태에서 일관성을 유지하기 위한 트랜잭션 조정 마이크로서비스를 제공합니다. MicroTx는 XA, LRA(장기 실행 작업) 및 TCC(시도 확인/취소)와 같은 여러 분산 트랜잭션 프로토콜을 지원합니다. Java, node.js, C/C++ 및 PL/SQL과 같은 다언어 마이크로서비스 간 분산 트랜잭션을 지원합니다. 이 LiveLab에서 개발자는 샘플 애플리케이션에 사용되는 다양한 마이크로서비스에서 데이터 일관성을 달성하는 방법을 알아볼 수 있습니다.

Oracle Transaction Manager for Microservices를 통한 마이크로 서비스 전반의 트랜잭션 일관성

구성 요소

마이크로서비스를 위한 완전한 개방형 플랫폼

애플리케이션 현대화를 위해 여러 기술을 통합하여 최적의 멀티 클라우드 마이크로서비스 기반을 구축해야 합니다. Oracle LiveLabs에서는 Oracle의 도구 및 기술에 액세스하여 다양한 실습과 워크샵을 실행할 수 있습니다. 이 워크샵에서는 Oracle과 함께 개방형 기술을 사용하여 배포 유연성을 제공하는 보다 간단한 아키텍처를 구축하는 방법을 보여줍니다. 도매 마이크로서비스 플랫폼 스택에 있는 OCI, Autonomous Database, Helidon, Micronaut, Weblogic, Java, Docker, Kubernetes, Istio Service Mesh에서 사용할 수 있는 클라우드 및 하이브리드 구성요소를 사용하여 Oracle LiveLabs에서 마이크로서비스를 구축합니다. 모놀리식 엔터프라이즈 앱을 현대화하여 마이크로서비스 여정을 시작하거나, 이 패스를 이미 중단한 경우 단순화할 수 있는 실습이 여러 개 있습니다.

마이크로서비스 용어

서버 미사용 - 데이터 저장소에 영구 상태가 필요하지 않고 작업이 즉시 실행됩니다(불러서 스타일 잊음). 람다 함수 및 API 게이트웨이를 예로 들 수 있습니다.

API 기반 - 마이크로 서비스는 API 게이트웨이와 같은 REST API를 사용하여 서로 통신합니다. 각 마이크로서비스에는 API 정의가 있습니다.

비동기 마이크로 서비스 - 느슨한 커플링은 Oracle Advanced Queuing 또는 Apache Kafka와 같은 대기열 또는 스트리밍 소프트웨어를 통해 비동기 메시징으로 구현됩니다.

워크플로우 작업 - 비즈니스 플로우(루프에 사람이 있음)도 장기 실행 트랜잭션을 나타냅니다. 예를 들어, Camunda, Zeebe 또는 temporal.io 플로우와 같은 BPMN 프레임워크가 있습니다.

자동화된 워크플로우 - Apache Airflow 및 Argo(CNCF)와 같이 자동화된 방식으로 간단한 워크플로우로 실행되는 작업(루프에 사람이 없는 작업)입니다.

데이터 기반 데이터 아키텍처는 일반적으로 Oracle 통합 데이터베이스 또는 특수 용도의 데이터베이스와 같은 영구 저장소를 사용하여 운영 및 의사 결정을 위해 앱의 데이터 사용을 촉진합니다.

클라우드 네이티브 - CNCF 구성요소 및 OCI 서비스와 같이 클라우드용으로 전적으로 개발된 애플리케이션입니다.

Hybrid cloud microservices - 고객의 데이터 센터(전용 클라우드) 및 퍼블릭 클라우드 전반에 걸쳐 작동하는 마이크로 서비스(예: Kubernetes/서비스 메시)로 프라이빗 클라우드 및 퍼블릭 클라우드 전반에 걸쳐 조정(클라우드 버스팅 사용 사례).

다중 클라우드 마이크로 서비스 - Kubernetes/서비스 메시를 통해 2개 이상의 퍼블릭 클라우드 및 프라이빗 클라우드에서 작동하는 마이크로 서비스로 여러 클라우드에서 통합관리(위험 완화를 제공하고 단일 퍼블릭 클라우드에 대한 잠금 방지)

마이크로서비스 당면 과제

마이크로서비스는 애플리케이션 현대화와 동의어이며, 모든 애플리케이션 개발을 위한 방향입니다. 하지만, 마이크로 서비스 아키텍처로의 여정을 더욱 효율적으로 만드는 몇 가지 고려 사항이 있습니다.

  • 애플리케이션에 대한 독립 마이크로서비스 수를 선택합니다. 마이크로 서비스 배포는 수천 개의 마이크로 서비스를 배포해야 할 때 복잡해지고 각 서비스의 컨텍스트가 매우 작을 때 조화롭게 수행될 것으로 예상됩니다. 경험에 따르면 20~50개의 마이크로서비스가 올바른 경계 컨텍스트로 식별되면 마이크로 서비스로 전환하는 것이 확실한 장점을 발휘하게 됩니다.
  • 마이크로서비스 경계 전반에서 트랜잭션을 구현하는 것은 XA 트랜잭션(일부 경우 동기 및 성능 제한)의 과제였습니다. 동기 SAGA는 더 높은 성능과 강력한 성능으로, 컨버지드 Oracle Database의 지원을 통해 더욱 간소화되고 있습니다.
  • 마이크로서비스 간 느슨한 커플링의 필요성은 동기식 REST API 서비스 사용과 메시징/대기 시스템 등으로 인해 하이브리드 클라우드 환경에서 애플리케이션을 배포할 때 비동기식 및 확장성이 뛰어납니다.
  • 추적 및 관찰 기능은 마이크로서비스 아키텍처에 대한 종합적인 배포 및 지원을 위해 애플리케이션 계층이나 중간 계층에서뿐만 아니라 데이터 계층에서도 중요합니다. 툴과 분석 통합은 하이브리드 배포의 이러한 중요한 측면 중점을 다루기 시작했습니다.

마이크로 서비스 고객 성공 사례

기계로 번역된 페이지입니다.