Ktor

Ktor 플러그인 레지스트리가 출시되었습니다!

Read this post in other languages:

Ktor는 플러그인을 이용하여 사용자가 애플리케이션의 기능을 세세하게 조작할 수 있도록 도와줍니다. 그런데 지금까지 타사 플러그인은 Ktor 팀이 제공하는 플러그인과는 별도로 관리되었기에, 이는 Ktor 에코시스템의 성장에 걸림돌로 작용했습니다.

그러던 중, 이번 달 초 Ktor 2024 제품 로드맵에서 Ktor 플러그인 레지스트리가 발표되었습니다. 그리고 이제 이 레지스트리를 사용할 수 있게 되었습니다. 이 레지스트리는 커뮤니티 기반의 플러그인을 Ktor 팀으로 제출할 수 있도록 하고, 검색하기 쉽도록 플러그인을 분류하고, 사용자들에게 필요한 문서를 제공합니다.

소개

현재 Ktor 프로젝트는 온라인 프로젝트 생성기를 통해 빌드할 수 있으며, 작업에 맞는 최고의 플러그인 조합을 바로 고를 수 있습니다. 아래에서 볼 수 있듯이 이름과 카테고리별로 플러그인을 보고 검색할 수 있습니다. 플러그인을 클릭하면 오른쪽에 설명이 표시됩니다. 설명에는 애플리케이션에 추가되는 코드의 예시도 포함됩니다.

Add(추가) 버튼을 누르면 플러그인이 필수 종속성과 함께 프로젝트에 추가됩니다. 여기에서는 Thymeleaf 템플릿 플러그인을 추가하는 데 Routing 플러그인이 필요합니다. Generate project(프로젝트 생성) 버튼 옆의 링크를 사용해서 추가된 플러그인을 보거나 필요한 경우 삭제할 수 있습니다.

이 설정은 강력하면서도 유연하지만 중대한 제약이 하나 있습니다. 프로젝트 생성기에서는 Ktor 팀이 제작한 플러그인만 선택할 수 있다는 점입니다.

규모가 더 큰 Ktor 커뮤니티에서도 좋은 플러그인을 다수 만들었지만, Ktor 프로젝트 생성기 내에는 커뮤니티 기반의 플러그인을 옵션으로 제공할 방법이 없었기 때문에 그러한 플러그인은 프로젝트에 수동으로 통합해야 했습니다.

그러나 이제 플러그인 레지스트리 덕분에 어떤 팀이든 플러그인을 제출하여 프로젝트 생성기에 포함시킬 수 있습니다. 레지스트리 자체는 커뮤니티 플러그인의 소스 코드를 포함하지 않습니다. 대신 각 플러그인을 설명하는 리소스 모음을 갖고 있으며 소스 코드가 어디에 있는지 알려줍니다. Ktor 팀은 이러한 리소스를 사용하여 플러그인을 획득 및 평가한 후 범용으로 통합할 수 있습니다.

플러그인 제출 방법

플러그인을 제출하려면 먼저 저장소를 포크 및 복제해야 하며, 그런 다음 리소스를 Plugins(플러그인) 디렉터리의 하위 폴더에 추가하고 변경 사항을 풀 리퀘스트로 제출해야 합니다. 리소스에는 총 5개의 파일, 즉, 3개의 YAML 파일, 1개의 마크다운 파일, 1개의 Kotlin 파일로 구성됩니다. 각 파일의 예시는 레지스트리의 Templates(템플릿) 폴더에서 확인할 수 있습니다.

제일 중요한 파일은 manifest.ktor.yaml입니다. 이 파일은 이름, 필수 조건, 카테고리 및 홈 저장소와 같이 필수적인 상세 정보를 정의합니다. 선택적으로 다른 리소스의 이름을 변경할 수도 있습니다. 아래는 다른 리소스의 표준 이름과 용도입니다.

group.ktor.yaml 플러그인을 제작한 그룹의 기본 정보.
documentation.md 프로젝트 생성기의 플러그인 선택 화면에 사용될 코드 스니펫을 포함한 플러그인 설명.
install.kt 사용자가 현재 플러그인을 선택할 때, 생성된 프로젝트에 삽입되는 코드.
versions.ktor.yaml Ktor 버전과 플러그인 버전의 매핑. 즉, 어떤 플러그인 버전이 어떤 Ktor 버전과 사용될 수 있는지를 의미합니다.

다음 절차는 어떻게 되나요?

플러그인이 제출되면 Ktor 팀이 다음 릴리스까지 검토합니다. 질문이나 문제가 있는 경우 GitHub에서 풀 리퀘스트를 관리하는 일반적인 절차를 따라 해결됩니다.

문제 없이 진행되면 플러그인이 생성기에 추가됩니다. 커뮤니티 기반의 플러그인은 기여자의 이름, 아이콘 및 웹사이트 링크를 포함하여 구분됩니다. 기여된 모든 코드는 Apache 2.0으로 사용권을 허가 받아야 하며 기여 가이드의 지침을 따라야 합니다.

Ktor 팀은 커뮤니티 플러그인의 새로운 버전이 릴리스되면 프로젝트 생성기를 이에 맞춰 업데이트합니다. Ktor의 향후 버전은 각 커뮤니티 플러그인의 적절한 버전에 대해 테스트됩니다. 플러그인이 현재 버전의 Ktor와 호환되지 않고, 문제가 해결되지 않는 경우 해당 플러그인은 제외됩니다.

결론

플러그인 레지스트리는 Ktor 커뮤니티에 큰 도움이 될 것이라 생각합니다. 이 도구는 커뮤니티 플러그인을 정규 플러그인과 동등한 위치로 올리고 프레임워크 사용자에게 광범위한 선택지를 제공합니다.

기존에 플러그인을 제공해 오던 분들은 최대한 빨리 플러그인을 제출해 주세요. 여러분의 선례를 보고 다른 팀도 플러그인을 제출하는 동기를 얻게 되기를 바랍니다. 더 자세한 정보를 원하시면 Kotlinlang Slack의 Ktor 채널에 참여하세요(Slack 초대장 요청하기).

게시물 원문 작성자

Jessie Cho

Garth Gilmour

image description