- TypeSpec은 API 중심 개발을 위한 새로운 언어로, API 개발자, 설계자, 매니저의 요구사항을 충족시키기 위해 설계됨
- 일관되게 높은 품질의 API와 관련 경험을 제공하는 것이 점점 더 복잡해지고 중요해지는 환경에서 개발됨
- TypeSpec은 단순한 언어 이상이며, 추상화를 가능하게 하고 코드 재사용을 장려하며 신속한 개발을 위해 최신 도구를 활용하는 플랫폼임
TypeSpec의 주요 특징
- 상호 운용성
- TypeSpec은 단순한 API 설명 언어가 아니라 API를 정의하고 다양한 프로토콜, 클라이언트, 서버, 문서 등을 동시에 출력할 수 있는 고수준 정의 언어임
- 업계 표준 API 정의 언어와 상호 운용 가능하여 다양한 선택 사항 간의 격차를 해소함
- 생산성
- TypeSpec은 데이터와 API 정의 프로세스를 즐겁고 생산적으로 만드는 우수한 개발자 경험을 제공함
- 언어는 간결하고 최소한의 입력으로 복잡한 데이터와 API 모양을 정의할 수 있음
- API 패턴
- TypeSpec은 일반적인 데이터 유형, API 패턴 및 지침을 팀 또는 에코시스템 전체에서 공유할 수 있는 고수준의 재사용 가능한 구성 요소로 캡슐화하여 API 품질을 향상시킴
- 익숙함
- TypeSpec은 TypeScript와 C#에서 영감을 받아 배우기 쉽고 많은 개발자에게 친숙하게 느껴짐
- 확장성
- TypeSpec은 사용자 정의 데코레이터 어휘 및 유형 템플릿으로 확장할 수 있어 비즈니스 또는 애플리케이션 로직 도메인에서 API를 모델링할 수 있음
- 생태계
- TypeSpec을 사용하면 공통 유형, 언어 확장, 린터 및 에미터를 패키지로 묶어 조직 내부 또는 에코시스템 전반에 걸쳐 NPM에 배포할 수 있음
커뮤니티와 협업
- Microsoft에서 사용 중
- Microsoft에서는 TypeSpec을 사용하여 API 개발 프로세스를 혁신하고 있음
- 많은 Azure 서비스에서 TypeSpec을 채택하고 있으며, 그 수는 매일 증가하고 있음
- Microsoft Graph 팀은 TypeSpec의 잠재력을 활용하여 생산성을 높이고 맞춤 설정을 단순화함
- 참여 요청
- TypeSpec은 단순한 언어 이상이며 커뮤니티임
- 모든 배경을 가진 개발자가 공개 베타에 참여하여 TypeSpec의 힘을 직접 경험할 수 있도록 초대함
GN⁺의 의견
- TypeSpec은 추상화 레벨이 높은 API 정의 언어로, API 개발 방식을 혁신적으로 개선할 수 있을 것으로 보임
- "API First" 접근 방식을 지원하여 개발 효율성과 최종 제품 품질 향상에 도움이 될 것임
- 다양한 프로토콜 지원, 확장성, 강력한 생태계 등으로 폭넓은 개발 시나리오에 적용 가능할 것으로 예상됨
- 하지만 새로운 언어 도입에는 항상 학습 비용이 발생하므로, 팀 내 도입 시 충분한 교육이 선행되어야 할 것임
- TypeScript와 C#의 문법을 차용해 학습 곡선을 낮추려 노력한 점은 긍정적임
- 유사한 역할을 하는 기존 API 정의 언어들(Swagger, RAML, API Blueprint 등)과의 차별화 포인트를 좀 더 명확히 할 필요가 있어 보임
- 기존 언어의 한계를 어떻게 극복하는지, 마이그레이션은 용이한지 등
- Microsoft 내부에서 먼저 사용하며 개선해 나가는 독푸딩 방식은 신뢰감을 줌
- 하지만 아직 오픈소스 프로젝트로 공개된 지 얼마 되지 않았으므로, 향후 몇 년간 지속적인 발전과 커뮤니티 지원이 관건이 될 것으로 보임
- API 설계의 표준화와 재사용성 향상이라는 방향성은 올바르나, 너무 많은 것을 한꺼번에 해결하려 한다는 인상도 있음
- 우선순위를 두고 단계적으로 기능을 강화해 나가는 것이 좋겠음