Takamol: Oracle Cloud에서 정부 HR 플랫폼을 위한 Kubernetes 및 마이크로서비스 배포
Riyadh에 본사를 둔 Takamol Holding은 노인 근로자를 정부 및 민간 부문 고용주와 모두 일치시킬 수 있도록 하이브리드 인프라에서 직무 교육, 기술 향상 및 인재 개발 서비스 플랫폼을 실행합니다. 하이브리드 인프라에서는 클라우드 환경이 OCI Kubernetes Engine(OKE)에서 여러 Kubernetes 클러스터를 실행합니다.
2013년 사우디아라비아 인적자원사회개발부(Saudi Arabian Ministry of Human Resources and Social Development)의 부서로 설립된 타카몰(Takamol)은 거의 십년간 동안 세계 곳곳에서 인적자원 프로그램을 현대화해왔다.
Takamol의 온프레미스 인프라는 운영 및 유지 관리에 너무 많은 비용이 들었기 때문에 Takamol은 Oracle Cloud Infrastructure(OCI)에서 실행되는 컨테이너 기반 마이크로서비스 아키텍처를 사용하여 새로운 인력 및 경제 개발 플랫폼을 출시하기로 결정했습니다. 오늘날 수십만 명의 사람들이 매일 Takamol의 플랫폼을 사용하여 유익한 고용을 찾고 적용하고 준비 할 수 있습니다. 최근 Takamol은 기관 및 개별 기부자 모두가 사용하는 기부 플랫폼을 마이그레이션했습니다.
Jeddah의 Oracle Cloud 리전에서 Takamol의 플랫폼은 분당 최대 10,000개의 동시 사용자 및 프로세스를 지원합니다. Takamol은 OCI의 관리형 서비스를 사용하여 다운타임 없이 신속하게 클라우드 네이티브 플랫폼에 대한 업데이트를 자동화합니다. OCI 테넌시에서 Takamol은 피크 시간 동안 빠르게 확장하고 사용량이 적은 시간에 축소할 수 있어 가능한 최저 비용으로 적시 지원을 제공합니다.
OCI에 대한 Takamol의 클라우드 네이티브 배포의 주요 특징은 다음과 같습니다.
- OCI Kubernetes Engine을 사용하는 컨테이너 기반 아키텍처
- 피크 시간 동안 높은 수요를 충족하기 위한 수평 포드 자동 스케일링(HPA)
- 제로 트러스트 네트워크 액세스
- NGINX 웹 애플리케이션 방화벽
- Stateful 구성 요소의 경우 Takamol은 해당 데이터베이스에 PostgreSQL를 사용하고 메시지 큐에 RabbitMQ를 사용합니다.
구조
Takamol Holding 엔지니어는 제로 트러스트 네트워크 액세스 도구에 연결하고 VCN(가상 클라우드 네트워크)에 액세스하기 전에 자체 Single Sign-On을 통해 인증됩니다.
플랫폼 사용자는 3개의 개별 장애 도메인에서 사용자 요청을 관리하는 Oracle Cloud Infrastructure Load Balancing을 통해 라우팅됩니다. 그런 다음 사용자 요청이 Oracle Cloud Infrastructure Kubernetes Engine(OKE) 수신 컨트롤러로 전송됩니다. 이 컨트롤러는 최종 대상으로 경로 지정되기 전에 검사됩니다.
Kubernetes 클러스터 내에서 Takamol은 여러 오픈 소스 도구를 사용하여 NGINX, 리버스 프록시 서버, 로드 밸런서, API 게이트웨이 등 사용자 요청을 처리합니다. 이러한 서비스는 수평 포드 자동 확장(HPA)을 사용하여 피크 시간 동안 높은 수요를 충족함으로써 Kubernetes 클러스터에서 확장됩니다. 또한 Takamol은 계층 7 앱 보호 서비스 거부(DoS) 앱을 사용하고 앱은 F5 NGINX로 WAF를 보호합니다. Takamol의 응용 프로그램의 대부분은 12 가지 요인 모델에 따라 무상태이므로 응용 프로그램 내 캐시 또는 저장이 필요하지 않습니다. 대신 Takamol의 애플리케이션은 외부 스토리지 서비스를 사용하여 Kubernetes 클러스터 내에서 쉽게 배포, 자동 확장 및 관리할 수 있습니다.
또한 Takamol은 Kubernetes를 위한 선언적 GitOps 연속 전달 도구인 Argo CD를 사용합니다. Takamol은 Argo CD를 사용하여 클러스터에 직접 액세스하지 않고도 워크로드를 선언적으로 배포할 수 있으므로 클러스터를 전용 서브넷에 배포할 수 있습니다. 개발자가 애플리케이션을 업데이트하는 대신 Argo CD는 Gitlab 저장소에서 읽어 새 서비스를 배포합니다. Gitlab은 클러스터 업데이트를 위한 직접 액세스를 제공하지 않습니다. Stateful 구성 요소의 경우 Takamol은 해당 데이터베이스에 PostgreSQL를 사용하고 메시지 큐에 RabbitMQ를 사용합니다.
로드 밸런서, Kubernetes 클러스터 및 오픈 소스 도구는 각각 별도의 서브넷에 있습니다. 서로 격리되어 있지만 통신 포트를 통해 정보를 보내고 받을 수 있습니다. Takamol은 Oracle VCN 흐름 로그 및 SEIM 보안 운영 센터(SOC)를 사용하여 추가 도구를 설치하지 않고도 서로 다른 서브넷 간의 통신을 가상화할 수 있습니다. Takamol은 앞으로 몇 달 동안 Oracle Cloud Infrastructure Functions를 통해 VCN 플로우 로그를 전송하여 SEIM 솔루션에 네트워크 로그를 전달할 계획입니다.
- Takamol 아키텍처의 약 90%는 자체 내장 모듈을 갖춘 오픈 소스 Oracle Cloud Infrastructure Terraform Provider의 코드형 인프라(IaC)를 사용하여 구축되었습니다. 이 접근 방식은 인프라를 배포하고 관리하는 데 필요한 인적 노력을 줄여 인적 오류의 위험을 크게 줄여 변경 속도를 높입니다.
- Takamol의 개발, 테스트 및 사전 제작 환경의 모든 서비스는 운영 환경으로 복제됩니다. 이러한 환경 중 어느 것도 상호 연결되지 않았습니다. 따라서 환경 간의 일관성이 유지됩니다.
- 데이터베이스 백업은 Oracle Cloud Infrastructure Block Volumes에서 백업을 아카이브하고 저장하는 pgbackrest를 사용하여 수행됩니다. 이를 통해 PIT(Point-In-Time Recovery)를 지원하면서 데이터베이스를 장기간 저장할 수 있습니다.
- Oracle Cloud Infrastructure Object Storage는 마이크로서비스, 메트릭, OKE 로그 및 GitLab 러너가 데이터를 캐싱하는 데 사용됩니다. 또한 PostgreSQL 데이터베이스의 비용 효율적인 장기 데이터베이스 백업을 제공합니다.
- Oracle Cloud Infrastructure Registry 및 Oracle Cloud Infrastructure Identity and Access Management 정책은 Takamol이 저장소에 대한 사용자 액세스를 제어하는 데 도움이 됩니다. 이전에는 Docker Hub를 사용했지만 OCI와 마찬가지로 세분화된 제어 기능을 제공하지 않았습니다. 또한 OCI Registry를 통해 Takamol은 내장 보안 스캔 기능을 사용합니다.
- Takamol은 로그용 시계열 데이터베이스인 Loki, 측정항목 수집용 Prometheus, 추적용 Tempo, 단일 OKE 클러스터에서 모두 중앙 집중화된 시각화를 위해 Grafana를 사용합니다.
다음 다이어그램은 이 참조 아키텍처를 보여 줍니다.
미래의 주 및 로드맵을 위해 Takamol은 관리형 및 클라우드 네이티브 서비스로 더 많은 서비스를 이전하고자 합니다.
- Neom의 Oracle Cloud 리전에서 재해 복구 사이트를 실행합니다.
- OpenSearch에서 Oracle Cloud Infrastructure Search를 활용하여 분산된 완전 관리형 유지보수가 필요 없는 전체 텍스트 검색 엔진을 사용할 수 있습니다.
- 데이터베이스 워크로드에 Oracle Autonomous Data Warehouse를 활용합니다.
- Oracle Cloud Infrastructure 취약성 검사 서비스를 사용하여 특히 도커 이미지에서 취약성을 검사합니다.
구조에는 다음과 같은 구성 요소가 있습니다.
- Tenancy
테넌시는 Oracle Cloud Infrastructure에 등록할 때 Oracle이 Oracle Cloud 내에서 설정하는 격리된 보안 분할영역입니다. 테넌시 내 Oracle Cloud에서 리소스를 생성, 구성 및 관리할 수 있습니다. 테넌시는 회사 또는 조직과 동의어입니다. 일반적으로 회사는 단일 테넌시를 가지며 해당 테넌시 내의 조직 구조를 반영합니다. 단일 테넌시는 대개 단일 구독과 연관되며, 단일 구독에는 일반적으로 하나의 테넌시만 포함됩니다.
- 지역
Oracle Cloud Infrastructure 리전은 가용성 도메인이라고 하는 데이터 센터가 하나 이상 포함된 지역화된 지리적 영역입니다. 지역은 다른 지역과 독립적이며, 먼 거리가 그들을 분리 할 수 있습니다 (국가 또는 대륙에 걸쳐).
- 구획
구획은 Oracle Cloud Infrastructure 테넌시 내의 지역 간 논리적 파티션입니다. 구획을 사용하여 Oracle Cloud 리소스에 대한 사용 할당량을 구성, 제어 및 설정할 수 있습니다. 지정된 구획에서 액세스를 제어하고 리소스에 대한 권한을 설정하는 정책을 정의합니다.
- 가용성 도메인
가용성 도메인은 한 지역 내의 독립형 독립 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 결함 허용을 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 한 가용성 도메인의 장애가 해당 영역의 다른 가용성 도메인에 영향을 미치지 않아야 합니다.
- 결함 도메인
장애 도메인은 가용성 도메인 내의 하드웨어 및 인프라 그룹입니다. 가용성 도메인에는 독립적인 전원 및 하드웨어를 갖춘 3개의 장애 도메인이 있습니다. 여러 결함 도메인에 리소스를 분배할 때 응용 프로그램은 결함 도메인 내의 물리적 서버 오류, 시스템 유지 관리 및 전원 오류를 허용할 수 있습니다.
- VCN(가상 클라우드 네트워크) 및 서브넷
VCN은 Oracle Cloud Infrastructure 지역에서 설정한 맞춤형 소프트웨어 정의 네트워크입니다. 기존의 데이터 센터 네트워크와 마찬가지로 VCN을 통해 네트워크 환경을 제어할 수 있습니다. VCN에는 VCN 생성 후 변경할 수 있는 겹치지 않는 CIDR 블록이 여러 개 있을 수 있습니다. VCN을 서브넷으로 분할할 수 있습니다. 서브넷은 지역 또는 가용성 도메인으로 범위가 지정될 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속적인 주소 범위로 구성됩니다. 서브넷 생성 후 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.
- 보안 목록
각 서브넷에 대해 서브넷에 들어오고 나가도록 허용해야 하는 트래픽의 소스, 대상 및 유형을 지정하는 보안 규칙을 생성할 수 있습니다.
- 경로 테이블
가상 라우팅 테이블에는 일반적으로 게이트웨이를 통해 서브넷에서 VCN 외부의 대상으로 트래픽을 라우팅하는 규칙이 포함되어 있습니다.
- 인터넷 게이트웨이
인터넷 게이트웨이는 VCN의 공용 서브넷과 공용 인터넷 간의 트래픽을 허용합니다.
- 서비스 게이트웨이
서비스 게이트웨이는 VCN에서 Oracle Cloud Infrastructure Object Storage와 같은 다른 서비스로의 액세스를 제공합니다. VCN에서 Oracle 서비스로의 트래픽은 Oracle 네트워크 패브릭을 통해 이동하며 인터넷을 순회하지 않습니다.
- 로드 밸런서
Oracle Cloud Infrastructure Load Balancing 서비스는 단일 시작점에서 백엔드에 있는 여러 서버로 트래픽을 자동으로 배포합니다.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine(OCI Kubernetes Engine 또는 OKE)는 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있는 확장 가능한 고가용성 완전 관리형 서비스입니다. 애플리케이션에 필요한 컴퓨트 리소스를 지정하면 Kubernetes Engine이 기존 테넌시의 Oracle Cloud Infrastructure에서 프로비저닝합니다. OKE는 Kubernetes를 사용하여 호스트 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.
- 계산
Oracle Cloud Infrastructure Compute를 사용하면 클라우드에서 컴퓨트 호스트를 프로비저닝하고 관리할 수 있습니다. CPU, 메모리, 네트워크 대역폭 및 스토리지에 대한 리소스 요구사항을 충족하는 구성을 사용하여 컴퓨트 인스턴스를 실행할 수 있습니다. 컴퓨트 인스턴스를 생성한 후에는 해당 인스턴스에 안전하게 액세스하고, 재시작하고, 볼륨을 연결 및 분리하고, 더 이상 필요하지 않을 때 이를 종료할 수 있습니다.
- 서비스 커넥터
Oracle Cloud Infrastructure Service Connector Hub는 OCI의 서비스 간 데이터 이동을 통합관리하는 클라우드 메시지 버스 플랫폼입니다. 서비스 커넥터를 사용하여 소스 서비스에서 대상 서비스로 데이터를 이동할 수 있습니다. 서비스 커넥터를 사용하면 대상 서비스로 전달되기 전에 데이터에 대해 수행할 작업(예: 함수)을 선택적으로 지정할 수도 있습니다.
Oracle Cloud Infrastructure 서비스 커넥터 허브를 사용하여 보안 정보 및 이벤트 관리(SIEM) 시스템에 대한 로깅 집계 프레임워크를 빠르게 구축할 수 있습니다.
- 레지스트리
Oracle Cloud Infrastructure Registry는 개발-운영 워크플로우를 간소화할 수 있는 Oracle 관리 레지스트리입니다. 레지스트리를 사용하면 Docker 이미지와 같은 개발 아티팩트를 쉽게 저장, 공유 및 관리할 수 있습니다. Oracle Cloud Infrastructure의 가용성과 확장성이 뛰어난 아키텍처는 애플리케이션을 안정적으로 배포하고 관리할 수 있도록 보장합니다.
- IAM(ID 및 액세스 관리)
Oracle Cloud Infrastructure Identity and Access Management(IAM)는 Oracle Cloud Infrastructure(OCI) 및 Oracle Cloud Applications의 액세스 제어 플레인입니다. IAM API 및 사용자 인터페이스를 통해 ID 도메인 및 ID 도메인 내의 리소스를 관리할 수 있습니다. 각 OCI IAM ID 도메인은 독립형 ID 및 액세스 관리 솔루션 또는 다른 사용자 모집단을 나타냅니다.
- 정책
Oracle Cloud Infrastructure Identity and Access Management 정책은 누가 어떤 리소스에 액세스할 수 있는지, 어떻게 액세스할 수 있는지 지정합니다. 그룹 및 구획 레벨에서 액세스가 부여됩니다. 즉, 특정 구획 내에서 또는 테넌시에 특정 유형의 액세스 권한을 그룹에 제공하는 정책을 작성할 수 있습니다.
- Oracle Cloud Infrastructure Vault
Oracle Cloud Infrastructure Vault를 사용하면 데이터를 보호하는 암호화 키와 클라우드의 리소스에 대한 액세스를 보호하는 데 사용하는 보안 자격 증명을 중앙에서 관리할 수 있습니다. 저장소 서비스를 사용하여 저장소, 키 및 암호를 만들고 관리할 수 있습니다.
- Cloud Guard
Oracle Cloud Guard를 사용하여 Oracle Cloud Infrastructure에서 리소스의 보안을 모니터링하고 유지 관리할 수 있습니다. Cloud Guard는 정의 가능한 감지자 레시피를 사용하여 리소스에서 보안 취약점을 검사하고 운영자 및 사용자에게 특정 위험한 작업을 모니터합니다. 잘못 구성되거나 안전하지 않은 작업이 감지되면 Cloud Guard는 정의할 수 있는 응답기 레시피를 기반으로 수정 조치를 권장하고 해당 작업을 수행하는 데 도움을 줍니다.
- 로깅로깅은 클라우드의 리소스에서 다음 유형의 로그에 액세스할 수 있는 확장성이 뛰어난 완전 관리형 서비스입니다.
- 감사 로그: 감사 서비스에서 내보낸 이벤트와 관련된 로그입니다.
- 서비스 로그: API 게이트웨이, 이벤트, 함수, 로드 밸런싱, 오브젝트 스토리지, VCN 플로우 로그와 같은 개별 서비스에서 내보낸 로그입니다.
- 사용자 정의 로그: 사용자 정의 응용 프로그램, 다른 클라우드 공급자 또는 온프레미스 환경의 진단 정보를 포함하는 로그입니다.
- 오브젝트 스토리지
Oracle Cloud Infrastructure Object Storage를 사용하면 데이터베이스 백업, 분석 데이터, 이미지 및 비디오와 같은 리치 콘텐츠 등 모든 콘텐츠 유형의 대량의 구조적 및 비구조적 데이터에 빠르게 액세스할 수 있습니다. 인터넷 또는 클라우드 플랫폼 내에서 직접 안전하고 안전하게 데이터를 저장하고 검색할 수 있습니다. 성능 또는 서비스 안정성이 저하되지 않고 스토리지를 확장할 수 있습니다. 빠르고 즉각적이며 자주 액세스하는 데 필요한 "핫" 스토리지에 표준 스토리지를 사용합니다. 장기간 보존하고 거의 또는 거의 액세스하지 않는 "콜드" 스토리지에 아카이브 스토리지를 사용합니다.
- 애널리틱스
Oracle Analytics Cloud는 확장 가능하고 안전한 퍼블릭 클라우드 서비스로, 데이터 준비, 시각화, 엔터프라이즈 보고, 증강 분석, 자연어 처리 및 생성을 위한 최신 AI 기반 셀프 서비스 분석 기능을 비즈니스 분석가들에게 제공합니다. 또한 Oracle Analytics Cloud를 사용하면 빠른 설정, 손쉬운 확장 및 패치 적용, 자동화된 라이프사이클 관리 등 유연한 서비스 관리 기능을 이용할 수 있습니다.