6P by neo 7달전 | favorite | 댓글 1개
  • 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 설계의 표준화와 재사용성 향상이라는 방향성은 올바르나, 너무 많은 것을 한꺼번에 해결하려 한다는 인상도 있음
    • 우선순위를 두고 단계적으로 기능을 강화해 나가는 것이 좋겠음
Hacker News 의견
  • TypeScript를 이미 API 타이핑에 사용 중이라면, TypeScript에서 직접 JSON 스키마를 생성하는 ts-json-schema-generator가 대안이 될 수 있음
  • OpenAPI의 YAML에 비하면 어떤 것이든 좋아 보이겠지만, 그럼에도 OpenAPI는 최고의 발전 중 하나로 여겨짐
  • TypeScript가 스키마 언어로 돌파구를 마련하기를 기대해 왔는데, TypeSpec은 JavaScript를 제거하고 JSON을 위한 타이핑만 남긴 것처럼 보임
  • TypeSpec을 최신 API에 사용하면서 GraphQL과 유사하게 API를 설명하고 디자인 우선 방식으로 개발하는 도구를 찾았는데, OpenAPI 편집기들은 너무 투박하고 API 내 데이터 관계를 불명확하게 만든 반면 TypeSpec은 큰 도움이 되었음
  • Microsoft에서 만든 것이므로 GraphQL에 대한 그들의 대답이 될 것으로 추정되며, 내부적으로 사용된다면 오픈소스 컨소시엄이 만드는 것에 비해 도구가 괜찮을 수 있음
  • WSDL의 TypeScript 버전처럼 보이는데, WSDL보다 오래 지속될지 모르겠음
  • 주요 의문점인 지원되는 출력 언어를 찾지 못했고, OpenAPI를 내보내고 형편없는 생성기를 사용하는 것 외에는 방법이 없어 보임
  • TypeSpec 파일을 TypeScript로 가져와서 자동으로 타입을 얻을 수 있다면 좋겠지만, 코드 생성은 성가시고 오류가 발생하기 쉬움
  • Smithy의 경쟁자/대안으로 보이며, TypeSpec 팀의 누군가가 여기 있다면 어떻게 비교되는지 의견을 듣고 싶음
  • YAML을 원하는 도구 체인으로 변환될 수 있을지 궁금함
  • 25년 전 CORBA IDL이 제공했던 것과 같은 스키마와 다중 언어를 위한 스텁 생성을 제공하는 고수준 IDL이 있으면 기쁠 것임