GCP, GitLab, Terraform과 같은 제품은 매우 유연하고 성능이 뛰어나지만 아래의 레고 더미와 같습니다.
이러한 제품은 본질적으로 대부분 의견이 없습니다. 즉, 고객은 자신의 고유한 상황에 맞는 방식으로 부품을 조합해야 합니다. 이로 인해 시작도 어렵지만, 1팀, 100 팀이 잘 작동하는 방식으로 조립하는 것도 어렵습니다. 스타트업에는 제품 개발에 집중하고 제공을 가속화하는 동시에 성장에 따라 확장되는 모범 사례를 이상적으로 준수할 수 있는 솔루션이 필요합니다. 대규모 조직에는 소프트웨어 제공 및 혁신 방식을 변화시킬 수 있는 무언가가 필요하지만 보안 및 거버넌스와 같은 기업의 문제를 해결하려면 이것이 필요합니다. 그러나 막 시작하는 단계에서는 잠재적으로 장기적인 영향을 미칠 수 있는 결정을 내릴 수 있는 정보가 가장 적고 최악의 위치에 있습니다. 그 결과, 클라우드 마이그레이션이나 앱 현대화 노력을 시도하는 기업은 시작 단계에서 벗어나는 데 실패하게 됩니다.
작동하는 것을 하나로 엮는 것은 충분히 쉽지만, 실제로 기업에 적합하고 확장 가능하며 안전한 방식으로 이를 수행하는 것은 사소한 일이 아닙니다. 실제로 이는 말 그대로 우리가 고객을 돕는 사업을 만든 것입니다. 더 나쁜 것은 이것이 미분화 된 작업이라는 것입니다. 기업은 동일한 유형의 문제를 해결하기 위해 자체 맞춤형 "클라우드 조립 라인", 즉 내부 개발자 플랫폼 (IDP)을 구축하고 유지 관리하는 데 수많은 엔지니어링 시간을 소비하고 있습니다. 엔지니어링 시간은 실제로 고객과 비즈니스에 중요한 일에 더 잘 투자될 것입니다.
이것이 우리가 솔루션에 대해 생각하게 된 이유입니다. GitLab과 GCP는 광범위한 고객 요구 사항을 해결하기 때문에 강력한 의견을 제공하지 않습니다. 이로 인해 이러한 도구에 대한 독자적인 구성이나 배포가 필요합니다 . 우리가 도달한 솔루션은 Konfig 입니다 . 아이디어는 우리가 "코드로서의 플랫폼"이라고 부르는 것을 통해 이러한 배포를 제공하는 것입니다. IAC(Infrastructure as Code)가 개별 리소스 수준 빌딩 블록을 구성하는 것에 관한 반면, Platform as Code는 한 수준 더 높습니다. 마치 기본적으로 통합된 것처럼 이러한 개별 제품을 일관된 방식으로 조립할 수 있는 것입니다. 그 결과, 확장 가능하고 기본적으로 안전하며 처음부터 모범 사례가 내장되어 있는 방식으로 생산 시간을 최소화하는 턴키 경험이 탄생했습니다. Linux 배포판은 사전 구성된 커널, 시스템 라이브러리 및 애플리케이션 어셈블리를 제공하여 즉시 사용 가능한 운영 체제를 제공합니다. 마찬가지로 Konfig는 사전 구성된 소스 제어, CI/CD 및 클라우드 공급자 어셈블리를 제공하여 소프트웨어 배송을 위해 즉시 사용 가능한 플랫폼을 제공합니다. 레거시 마이그레이션, 현대화, 그린필드 등 Konfig는 GCP 및 GitLab에 대한 패키지 온램프를 제공합니다.
Konfig의 핵심은 플랫폼 개념입니다 . 이러한 맥락에서 플랫폼은 비즈니스의 일부를 분할하거나 그룹화하는 방법입니다. 이는 다양한 제품 라인, 사업부 또는 업종일 수 있습니다. 이러한 플랫폼의 범위와 개수는 조직마다 다르며 비즈니스 구조에 따라 다릅니다. 소규모 회사나 스타트업은 단일 플랫폼으로 구성될 수 있습니다. 대규모 조직에는 수십 개가 있을 수 있습니다.
그런 다음 플랫폼은 도메인 중심 설계에서 빌린 개념인 도메인 으로 더 세분화됩니다. 도메인은 특정 영역이나 문제 공간에 대한 비즈니스 논리, 규칙 및 프로세스를 포함하는 제한된 컨텍스트입니다. 간단히 말해, 더 큰 시스템을 구성하는 관련 서비스와 작업 부하를 논리적으로 그룹화하는 방법입니다. 예를 들어, 온라인 소매를 제공하는 기업은 제품 카탈로그, 고객 관리, 주문 관리, 지불 처리 및 이행과 같은 도메인을 갖춘 전자상거래 플랫폼을 보유할 수 있습니다. 각 도메인에는 5~10개의 서비스가 포함될 수 있습니다.
이 구조는 조직 구조 자체를 모델로 하므로 액세스 관리 및 거버넌스를 인프라와 워크로드에 매핑하는 편리하고 자연스러운 방법을 제공합니다. 팀은 해당 도메인 내에서 소유권을 갖거나 높은 액세스 권한을 가질 수 있습니다. 또한 플랫폼 수준에서 사용할 수 있는 클라우드 서비스와 API를 지정하고 필요한 경우 도메인 수준에서 추가로 제한할 수도 있습니다. 이 계층 구조는 대규모 조직에 엔터프라이즈 표준을 적용하는 동시에 소규모 조직에 높은 수준의 유연성과 자율성을 허용하는 강력한 방법을 제공합니다. 기본적으로 필요할 때는 거버넌스를 허용하고, 필요하지 않을 때는 자율성을 허용합니다. 이는 규제 또는 규정 준수 요구 사항이 있는 조직에 특히 유용하지만 " 황금 경로 ", 즉 조직 내에서 무언가를 구축하기 위한 독선적이고 지원되는 방식을 시행하려는 회사에도 똑같이 유용합니다 . 마지막으로 도메인은 클라우드 리소스가 도메인 프로젝트로 그룹화되므로 명확한 비용 가시성을 제공합니다. 이를 통해 예를 들어 전자상거래 플랫폼에서 "처리" 비용과 "지불 처리" 비용을 쉽게 확인할 수 있습니다.
"코드형 플랫폼"은 이러한 추상화가 YAML 구성에서 선언적으로 모델링되고 GitOps를 통해 관리됨을 의미합니다 . 플랫폼과 도메인의 정의는 아래에 표시된 소량의 메타데이터로 구성되지만, 그 소량의 메타데이터는 결국 백그라운드에서 많은 무거운 작업을 수행하게 됩니다.
apiVersion: konfig.realkinetic.com/v1beta1
kind: Platform
metadata:
name: ecommerce-platform
namespace: konfig-control-plane
labels:
konfig.realkinetic.com/control-plane: konfig-control-plane
spec:
platformName: Ecommerce Platform
gitlab:
parentGroupId: 82224252
gcp:
billingAccountId: "123ABC-456DEF-789GHI"
parentFolderId: "1080778227704"
defaultEnvs:
- dev
- stage
- prod
services:
defaults:
- cloud-run
- cloud-sql
- cloud-storage
- secret-manager
- cloud-kms
- pubsub
- redis
- firestore
api:
path: /ecommerce
platform.yaml
apiVersion: konfig.realkinetic.com/v1beta1
kind: Domain
metadata:
name: payment-processing
namespace: konfig-control-plane
labels:
konfig.realkinetic.com/platform: ecommerce-platform
spec:
domainName: Payment Processing
gcp:
services:
disabled:
- pubsub
- redis
- firestore
api:
path: /payment
groups:
dev: [payment-devs@example.com]
maintainer: [payment-maintainers@example.com]
owner: [gitlab-owners@example.com]
domain.yaml
플랫폼, 도메인 및 그 안에 포함된 모든 리소스는 Konfig 제어 플레인에 의해 관리됩니다. 제어 플레인은 이러한 YAML 정의를 사용하고 구성에 지정된 원하는 상태를 '실제 세계'에 반영하기 위해 GitLab 및 GCP에 필요한 모든 작업을 수행합니다.
제어 평면은 GitLab의 그룹 및 프로젝트 구조를 관리하고 이 구조를 GCP와 동기화합니다. 여기에는 GitLab 파이프라인이 GCP로 인증할 수 있도록 OpenID Connect 구성, 서비스 계정 및 역할 바인딩과 같은 IAM 리소스, GCP와 GitLab 간의 사용자 권한을 동기화하기 위한 SAML 그룹 링크 관리, 서비스 활성화 등 이면의 다른 여러 리소스도 포함됩니다. 클라우드 프로젝트의 API. 플랫폼/도메인 모델을 사용하면 컨트롤 플레인이 세분화된 권한을 지정하고 필요한 항목에만 액세스 범위를 지정할 수 있습니다. 실제로 개발자에게 노출되는 자격 증명은 전혀 없습니다. 또한 개발자가 사용할 수 있는 클라우드 서비스와 다양한 환경에서 개발자가 갖는 액세스 수준을 관리할 수 있습니다. 이 거버넌스는 중앙에서 관리되지만 GitLab과 GCP에 걸쳐 통합됩니다.
최종 결과는 소스 제어, CI/CD 및 클라우드 공급자 환경을 포괄하는 클라우드 개발 플랫폼을 위한 구성 및 표준 기반 기반입니다. 이 기반은 개발자가 조직의 내부 제어, 표준 또는 규제 요구 사항을 충족하면서 소프트웨어를 쉽게 구축하고 제공할 수 있는 최적의 경로를 제공합니다. 이제 엔터프라이즈 클라우드 환경에 워크로드를 제공할 준비가 되었습니다.
Konfig 제어 플레인은 Terraform과 같은 기존 IAC 도구를 사용하여 애플리케이션 인프라를 관리할 수 있는 엔터프라이즈 클라우드 환경을 구축합니다. 그러나 컨트롤 플레인은 단순히 기반을 관리하는 것 이상의 기능을 수행할 수 있습니다. 또한 이 클라우드 환경 에 배포되는 워크로드를 관리할 수도 있습니다 . 이는 Konfig가 실제로 GitLab 및 GCP로 구성된 클라우드 플랫폼을 구성 및 관리하는 Konfig 플랫폼 과 애플리케이션 작업 부하 및 해당 인프라 리소스를 구성 및 관리하는 Konfig Workloads 라는 두 가지 구성 요소로 구성되어 있기 때문입니다 .
레고 비유를 사용하여 Konfig 플랫폼은 사전 구축된 공장을 제공하고 Konfig 워크로드는 공장 내에 사전 구축된 조립 라인을 제공하는 것으로 생각하십시오. 두 가지를 함께 사용하여 완전한 턴키 경험을 얻거나 Konfig 플랫폼을 사용하고 Terraform과 같은 "자신만의 조립 라인을 가져올" 수 있습니다.
Konfig Workloads는 컨트롤 플레인에서 리소스를 관리하는 Terraform에 대한 IAC 대안을 제공합니다. GitLab 및 GCP와 같은 플랫폼 수준 구성 요소를 관리하는 방법과 유사하게 이는 제어 영역 클러스터에서 실행되는 연산자를 사용하여 작동합니다. 이 연산자는 시스템의 원하는 상태를 현재 상태와 지속적으로 비교하고 둘을 조정하는 데 필요한 모든 작업을 수행하는 제어 루프 에서 실행됩니다. 이에 대한 간단한 예는 집에 있는 온도 조절 장치입니다. 온도(원하는 상태)를 설정하면 온도 조절 장치가 작동하여 난로나 에어컨을 켜고 끄면서 실제 실내 온도(현재 상태)를 원하는 상태에 더 가깝게 만듭니다. 이 모델은 실제 상태가 구성된 상태에서 벗어나는 상태 드리프트의 가능성을 제거합니다. 이는 상태가 백엔드로 관리되는 Terraform과 같은 도구에서 큰 문제가 될 수 있습니다.
Konfig UI는 시스템 상태를 시각적으로 보여줍니다. 이는 여러 파일이나 저장소에 분산될 수 있는(실제로 환경에서 실행 중인 항목을 나타내지 않을 수도 있는) YAML을 통해 읽는 것보다 특정 플랫폼, 도메인 또는 워크로드를 빠르게 이해하는 데 유용합니다. 이 UI를 사용하면 워크로드가 구성하고 액세스할 수 있는 리소스, 이러한 리소스의 상태(준비 상태, 아직 프로비저닝 중인지 또는 오류 상태인지 여부), 다양한 환경에서 워크로드가 구성되는 방식을 쉽게 확인할 수 있습니다. UI 자체를 사용하여 워크로드에 자동으로 범위가 지정되는 데이터베이스 또는 스토리지 버킷과 같은 새로운 리소스를 프로비저닝할 수도 있습니다. 이는 원하는 변경 사항으로 GitLab에서 병합 요청을 생성함으로써 작동하므로 UI를 사용하여 리소스를 구성할 수 있지만 모든 것은 여전히 IAC 및 GitOps를 통해 선언적으로 관리됩니다. 이것은 우리가 "Visual IAC"라고 부르는 것입니다.
현재 클라우드 환경은 강력한 도구를 제공하지만 이를 효율적이고 안전하게 대규모로 조합하는 것은 여전히 어려운 과제로 남아 있습니다. 이러한 "차별화되지 않은 작업"은 핵심 비즈니스 요구 사항에 더 효과적으로 투자할 수 있는 귀중한 엔지니어링 리소스를 소비하며, 이로 인해 조직이 클라우드 여정을 시작할 때 출발선에서 벗어나는 것조차 방해하는 경우가 많습니다. 코드형 플랫폼(Platform as Code) 및 표준 중심 개발 원칙을 기반으로 구축된 Konfig는 이러한 격차를 해결합니다. 우리는 고객이 고객에게 비즈니스 가치를 제공하는 데 집중할 수 있도록 클라우드 운영을 통해 고객이 더 빠르게 움직일 수 있도록 돕기 위해 이를 구축했습니다. 클라우드로 마이그레이션하든, 현대화하든, 처음부터 시작하든 상관없이 Konfig는 GitLab, GCP, 코드형 인프라의 사전 구성되고 독창적인 통합을 제공하여 다음을 제공합니다.
Konfig는 개발 조직이 클라우드에 소프트웨어를 제공하는 운영 체제와 같은 기능을 합니다. 클라우드 마이그레이션 및 앱 현대화를 전문으로 하는 독선적인 IDP입니다. 이를 통해 혁신적인 소프트웨어 제품을 구축하고 탁월한 고객 경험을 제공하는 등 정말로 중요한 일에 집중할 수 있습니다.
Retrieval Augmented Generation(RAG) - LlamaIndex를 이용한 문서용 챗봇 만들기 (0) | 2024.04.24 |
---|---|
Wagtail 사용법 (1) | 2024.04.21 |
GCP에서 Serverless 구성하기(API Gateway + Cloud Run) (0) | 2024.04.19 |
Multi-tenancy with Nestjs (1) | 2024.04.19 |
Wagtail vs Wordpress - 프로젝트에 적합한 CMS를 선택하는 방법 (1) | 2024.04.18 |
댓글 영역