원문 캡처 · github.com
원문 캡처 · github.com

FINOS의 Architecture as Code(AasC)는 사람이 읽고 기계가 처리할 수 있는 버전 관리 코드로 소프트웨어 아키텍처를 기술하고 관리하는 프로젝트다. 핵심 명세인 Common Architecture Language Model(CALM)과 이를 활용하는 도구를 제공하며, 복잡한 아키텍처를 이해하고 개발·유지보수하는 데 활용하도록 설계됐다.

시작하려면 CALM 튜토리얼을 참고할 수 있다. 프로젝트는 CALM 명세뿐 아니라 명세를 활용하는 기능도 개발하고 있다. 별도 프로젝트를 만드는 것도 가능하지만, FINOS는 커뮤니티 단일 저장소에 참여할 것을 권한다. 이렇게 하면 프로젝트가 커뮤니티에 공개되고 기여를 받을 수 있으며, 매니페스트 변경 사항이 해당 프로젝트에서 사전에 빌드되도록 할 수 있다는 설명이다.

저장소와 프로젝트

architecture-as-code는 여러 프로젝트를 포함하는 모노레포다. 각 하위 프로젝트는 독립적으로 컴파일하고 릴리스한다. 기계가 읽을 수 있는 프로젝트 목록은 security-insights.yml에 있으며, 이는 OSPS-QA-04.01에 따른다.

현재 하위 프로젝트는 다음과 같다. 별도 표기가 없는 항목의 상태는 Active다.

FINOS의 CALM 프로젝트는 세 저장소로 구성된다. 이 저장소에는 CALM 명세를 활용하는 CLI, 서버, 공용 라이브러리, 데이터 모델, 위젯, CALM Hub와 UI, VS Code 확장, CALM Studio, CALM Guard, 문서 사이트, CALM Lab이 들어 있다. calm-schema는 CALM 메타 스키마와 문서, 검증 테스트 모음을 관리한다. 이 스키마는 npm의 @finos/calm-schema로 배포되며 이 저장소의 도구가 의존한다. calm.finos.org에도 게시된다. calm-governance는 프로젝트 거버넌스, 기여 지침, 메인테이너 명단과 행동 강령을 관리하며 코드는 포함하지 않는다. 스키마 변경은 architecture-as-code가 아니라 calm-schema에 제안해야 한다.

참여와 기여

AasC는 FINOS DevOps Automation Special Interest Group에서 개발을 시작한 뒤 독립적인 최상위 프로젝트로 승격됐다. 커뮤니티 Zoom 모임은 매달 넷째 화요일에 열린다. 모임 목록에서 예정된 모임과 지난 모임을 확인할 수 있다. 활발히 기여하는 사람을 위한 오피스 아워는 매주 목요일 열리며, 세부 정보는 FINOS 행사 일정에서 확인한다. 아이디어나 의견은 저장소에 이슈를 등록해 전달할 수 있다.

기여는 풀 리퀘스트로 받는다. 제안 절차는 다음과 같다.

  • 관심 있는 이슈를 고르거나 새 이슈를 등록하고, 이슈에서 담당 메인테이너와 작업 계획을 논의한다. 모임에 참석해 논의해도 된다. 처음 기여하는 사람을 위한 추천 이슈도 있다.
  • 저장소를 포크한다: https://github.com/finos/architecture-as-code/fork
  • 기능 브랜치를 만든다: git checkout -b feature/fooBar
  • 저장소의 기여 지침, 프로젝트 전체 기여 지침, 커뮤니티 행동 강령을 읽는다.
  • 변경 사항을 커밋한다: git commit -am 'Add some fooBar'
  • 브랜치에 푸시한다: git push origin feature/fooBar
  • 새 풀 리퀘스트를 만든다.

지원·보안·거버넌스

지원은 커뮤니티 기반이며 최선의 노력으로 제공된다. 지원 질문 이슈를 등록하거나 오피스 아워에서 질문할 수 있다. SUPPORT.md는 지원 대상 릴리스와 보안 업데이트가 종료되는 시점을 설명한다. 취약점을 비공개로 보고하는 방법, 의존성 및 코드 검사 정책, 릴리스 무결성 확인 절차는 SECURITY.md에 있다. 프로젝트 위협 모델은 THREAT_MODEL.md에서 확인할 수 있다.

프로젝트 전체의 정책, 메인테이너 명단, 행동 강령은 finos/calm-governance에서 관리하며 프로젝트의 모든 저장소에 적용된다. GOVERNANCE.md는 역할, 기여 규칙, 메인테이너 투표와 메인테이너의 선임·해임 방법을 다룬다. MAINTAINERS.md에는 프로젝트 전체 메인테이너 명단과 리드 메인테이너가 적혀 있다. MAINTAINERS_GUIDELINES.md는 이 모노레포의 검토, 분류, 품질, 릴리스, 온보딩 지침을 설명한다. 프로젝트 전체 기여 지침은 CONTRIBUTING.md, 모든 참여자에게 적용되는 행동 강령은 CODE_OF_CONDUCT.md에 있다. 각 하위 프로젝트의 메인테이너는 저장소의 프로젝트 목록에서 확인할 수 있다. 이 저장소에 쓰기 권한을 받으려면 기존 메인테이너의 지명과 투표 승인이 필요하다. 자세한 기준은 GOVERNANCE.md에 명시돼 있다.

GitHub Actions는 기존 작업과 일관된 이름 규칙을 따라야 관련 빌드 단계를 찾기 쉽다. 이해하기 어려운 작업은 다른 사람이 따라 하고 유지보수할 수 있도록 문서화해야 한다. TypeScript 패키지는 현재 세 개다. 그중 두 개는 npm workspaces로 관리하고, 하나는 일반 npm으로 관리한다. 모두 같은 워크스페이스에 들어가기 전까지 빌드와 관리 방식이 조금씩 다르므로 각 패키지에 연결된 GitHub Actions에서 빌드와 테스트 방법을 확인해야 한다.

저작권은 FINOS에 있으며, 프로젝트는 Apache License, Version 2.0으로 배포된다. SPDX 식별자는 Apache-2.0이다.