profile image

L o a d i n g . . .

728x90

Central Dogma는 라인에서 개발 및 관리하는 오픈소스입니다. 공식 사이트에서 CD(Central Dogma)는 다음과 같이 정의됩니다.

Central Dogma is an open-source highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2. 

정의만 가지고 CD가 정확이 무엇을 하는지 모르겠으니, 그 기능에 대해 살펴보겠습니다. 

  • json, yaml, xml 형태의 설정파일을 CD에 저장하고 관리할 수 있습니다. 고가용성을 위한 복제 기능(multi-master repliaction)을 제공하고, 변경사항을 관리할 수 있습니다(version controlled repository). 
  • CD에서 제공하는 java library를 활용해 CD를 손쉽게 사용 가능합니다. 
  • 애플리케이션이 CD에 등록된 설정파일의 변경사항을 추적할 수 있는 기능을 제공합니다(변경된 설정을 확인하기 위한 애플리케이션 재실행이 필요하지 않습니다)
  • Pull request 형태로 설정을 변경 및 관리할 수 있습니다. 즉, 팀 차원에서 설정을 함께 관리하기 용이합니다.  

 

Central Dogma 실행 

실제로 CD를 실행시켜 어떻게 동작하는지 살펴보겠습니다. 아래 링크에서 CD를 다운로드하여 실행할 수 있습니다. 

 

Welcome to Central Dogma — Central Dogma 0.61.1 documentation

© Copyright 2017-2023, LINE Corporation.

line.github.io

Download Central Dogma

저는 압축파일을 다운로드하여 로컬환경에서 CD를 실행하겠습니다. 압축을 풀고.../central-dogma-0.61.1/bin 폴더에 들어가면 각종 실행 스크립트를 확인할 수 있습니다.

Central Dogma 실행 스크립트

그중./startup 커맨드로 CD를 실행시키겠습니다. 

Central Dogma 실행 완료

http://127.0.0.1:36462/#/ 링크로 접속하면 CD의 메인 화면을 확인할 수 있습니다. 

Central Dogma Projects 화면

Central Dogma 용어 

CD를 실제로 사용하기에 앞서 CD에서 사용하는 용어부터 살펴보겠습니다. 

  • Project: CD의 가장 상위의 저장 단위입니다(GitHub의 organization과 유사한 역할을 합니다). 다수의 repository를 포함합니다.
  • Repository: 설정 파일이 저장됩니다. 설정파일의 변경이력이 함께 저장됩니다. 
    • User repository: 애플리케이션 설정파일을 저장합니다. 1개 이상의 user repository를 가질 수 있습니다. 
    • Meta repository: Project의 설정(metadata)을 관리합니다. meta라는 이름을 기본으로 가집니다. 
  • Commit: Repository의 변경사항을 의미합니다. 각각의 commit은 revision이 부여됩니다. 
  • Revision: Repository의 특정 시점에 대한 이력을 의미합니다(Integer으로 표현됩니다). Revision의 값은 1부터 시작해서 commit이 추가될 때마다 1씩 증가합니다. 

 

Central Dogma 사용하기 

용어에 대해 살펴봤으니 실제로 CD를 사용해 보겠습니다. 우선 proejct부터 생성해 보겠습니다. 저는 project-1과 project-2, 총 2개의 proejct를 생성하겠습니다. 

Create a project
Proejct(project-1) 생성
2개의 project 생성

Project 생성이 완료됐으니 repository(repository-1, repository-2)를 생성하겠습니다. 

Create a repository
Repository 생성 완료

다음으로는 repository-1에 애플리케이션에서 사용할 수 있는 설정 파일을 생성해 보겠습니다. 

Create file
file.json 생성
file.json 생성 완료(commit)

 

Spring Boot + Central Dogma 

지금까지 CD를 활용해 애플리케이션에서 사용할 설정파일을 어떻게 생성하는지 살펴봤습니다. 다음으로는 spring boot 애플리케이션에서 어떻게 CD의 설정파일을 사용하는지 살펴보겠습니다. 예제에서 사용할 코드(spring boot + central dogma)는 github에 올려두었습니다. 

 

GitHub - seonwoo960000/central-dogma-example: Central dogma example

Central dogma example . Contribute to seonwoo960000/central-dogma-example development by creating an account on GitHub.

github.com

 

프로젝트 조회 

아래의 코드를 사용하면 CD에 등록된 project를 조회할 수 있습니다. 

Get projects

 

파일 조회 

다음 코드를 사용하면 CD에 등록된 특정 파일 전체를 조회할 수 있습니다.

Get file

또한 jsonPath를 활용해 json 파일의 특정 key에 대응하는 값을 조회할 수 있습니다. 

Get value from file

 

변경사항 감지 

위 두 기능을 사용할 때까지만 해도 CD에 대한 임팩트가 크지 않았습니다. 그러나 CD가 제공하는 설정 변경 감지 기능을 쉽게 사용해 보니, 나중에 프로젝트에 적극적으로 도입해보고 싶다는 생각이 들었습니다. 

Central Dogma의 변경사항 감지

 

그 외 

Central dogma는 애플리케이션 개발의 관점에서도 훌륭한 프로젝트이지만, 오픈소스에 기여하고 싶은 개발자에게도 정말 좋은 프로젝트라고 생각합니다. Issue와 PR에 대해서 꾸준하게 관리되고 있으며, Armeria라는 훌륭한 오픈소스 maintainer 분들께서 Central Dogma를 함께 관리해 주시기 때문에 컨트리뷰션 과정에서 기술적인 성장을 이룰 수 있을 거라 생각합니다. 

728x90
복사했습니다!