Global Seamless Service


Twelve Labs의 고객은 전세계 90개 국가에 분포되어 있습니다. 다양한 환경에 있는 고객에게 제품을 배포하고 일정한 품질의 서비스를 제공하기 위해 노력하고 있습니다.

No downtime deployment. 저희의 고객은 전세계에 분포되어 있기 때문에 24/7 서비스가 사용 가능하도록 최선을 다합니다. 이를 위해 Rolling update, Canary deployment strategy를 할 수 있는 Loosely coupled stateless micro services 시스템을 설계, 구축합니다.

Resilience. 심각한 버그 또는 시스템 장애는 예기치 않게 발생할 수 있습니다. 엔지니어링 팀은 장애의 원인을 발견하고 고친 후 내부 회고를 통해 재발하지 않도록 노력합니다. 하지만, 빠르게 변화하는 제품에 따라 시스템도 계속하여 변화합니다. 이전에 겪었던 비슷한 문제도 원인과 해결 방법은 달라질 수 있습니다. 따라서 예기치 않은 문제가 발생하더라도 전체 서비스에 심각한 장애 전파가 되지 않고 금방 스스로 회복할 수 있는 시스템을 구성해야합니다.

Observability. 비디오를 벡터화하여 검색, 분류 등의 서비스를 제공하기 위해 저희는 복잡한 시스템을 구축하고 있습니다. 고객의 API request를 받아 response를 전달할 때 까지 수 많은 micro service와 3rd party service, infrastructure를 거쳐야 합니다. 복잡성을 관리하기 위해 log, metric, event, trace 등의 정보를 모두 연결하여 쉽게 이해할 수 있는 시스템을 만듭니다.

High Extensible API


Twelve Labs는 AI/ML에 친숙하지 않더라도 쉽게 사용할 수 있는 비디오 이해, 검색, 분류 API를 제품으로 제공하고 있습니다. Twelve Labs API를 어느 도메인에서든 쉽게 연동하여 사용하도록 documenting, schema management, versioning 등의 개발부터 관리, 운영에 대해 다양한 기술 과제가 있습니다.

Easy to use. 확장성이 뛰어난 API를 개발하는 데 있어 가장 중요한 부분 중 하나는 개발자가 쉽게 사용할 수 있도록 하는 것입니다. 이를 위해 표준 프로토콜과 데이터 형식을 신중하게 고려하여 API를 설계해야 합니다. 또한, 명확하고 직관적인 문서와 함께 endpoints, parameters, request/response schema가 일관성 있게 정의되어야 합니다.

Compatibility. 고객들이 직접 사용하고 여러 서비스에 연동되어 있는 Twelve Labs API는 다양한 플랫폼에서 원활하게 작동될 수 있도록 버전과 종속성을 지속적으로 관리해야 합니다. 항상 엔지니어는 API backward compatability를 고려하여 개발을 하며 통합 테스트 자동화 등을 통해 끊임없는 유지 보수를 합니다.

Repeatable infrastructure


Video Understanding Platform을 다양한 환경에서 사용할 수 있도록 Serverless, Dedicated, On-premise infrastructure를 구성할 계획을 하고 있습니다. infrastructure를 내부, 외부 시스템에 반복적으로 배포하기 위해서는 infrastructure를 보다 쉽게 만들고 관리할 수 있어야 합니다.

Infrastructure as code (IaC) aws, azure, gcp 등의 cloud provider 뿐만 아니라 on-premise 환경에서 서비스를 배포할 때에도 자동화하여 사용할 수 있도록 VM과 같은 infrastructure뿐만 아닌 Twelve Labs에서 개발한 서비스들을 packaging 해야 합니다. IaC는 virtual machines, load balancer와 같은 infrastructure 구성과 Twelve Labs의 server 구성을 함께 코드로 정의하여 반복적인 배포 작업을 자동화해줍니다.

Consistency. Infrastructure의 components, configuration, dependency는 모든 환경에서 일관성을 유지해야 합니다. 이러한 일관성을 달성하려면 구성 파일, 종속성 버전을 주의 깊게 관리하고 인프라 코드가 모든 환경에 일관되게 배포되도록 해야 합니다.

Security and compliance. On-premise infrastructure의 경우에 물리적인 접근 제어, 네트워크 보안, 업계 규정 준수 등의 엄격한 제한 사항들이 존재합니다. 이러한 규정을 준수하기 위해 encryption, access controls, secure network communication 등을 개발해야 합니다.