API의 공통과제: 안정성 / 확장성 / 보안, 그 해결책

Jun Hwang

API의 공통과제 3개와 해결법

by James Higginbotham

API 거버넌스라는 용어는 종종 딜리버리 절차를 느리게 만드는 무거운 프로세스와 함께 두려운 느낌을 가져옵니다. 그러나 반드시 그럴 필요는 없습니다. API 거버넌스는 API 프로그램의 현재 및 미래 문제를 방지하는 데 사용되는 도구입니다. 가벼운 거버넌스와 효과적인 API 관리 플랫폼을 통해 <u>API 불안정성, 열악한 확장성 및 보안 취약성</u>을 해결하는 방법을 보여주는 세 가지 시나리오를 살펴보겠습니다.
</br>

경량 거버넌스로 API 불안정성 극복하기

API가 릴리스 간에 안정적으로 유지되도록 하는 것이 중요합니다. 고객은 API 설계 수정으로 인해 강제로 코드를 변경하는 것을 원하지 않습니다. 설상가상으로, 그들은 자신의 코드가 실패했다는 경고를 듣고 싶어하지 않고 최신 API 릴리스에서 *연동 실패 (breaking-changes)*를 초래한 것이 여러분의 잘못이라는 것을 찾아내려 한다는 것입니다.

이것은 한 API 제공자의 경우였습니다. 그들은 지속적으로 *연동 실패 (breaking-changes)*를 유발함으로써 고객이 이러한 일이 발생할 때마다 코드를 업데이트하도록 했습니다. 문제가 지속되면서, 그들이 더 안정적인 옵션을 찾는 동안 고객이 좌절감을 느끼며 이탈하는 것을 보아야 했습니다.

이 문제를 해결하기 위해 경량 거버넌스 프로세스를 도입했습니다. 이 프로세스는 API 설계 변경 사항에 대한 자동화 및 수동 검토를 수행하여 새로운 릴리스마다 불안정성을 유발하는 것들을 방지하도록 간단한 단계를 정의했습니다.

또한, 출시하기 전에, 프로덕션에 API 변경 사항을 미리 볼 수 있도록 하는 API 안정성 계약의 개념을 도입하였습니다. 이에 대한 자세한 내용은 여기, 연동 실패를 줄이기 위한 꿀팁에서 확인할 수 있습니다.

이러한 단계는 일관된 API 디자인을 장려하는 스타일 가이드와 결합되어 릴리스 프로세스를 개선하고 시간이 지남에 따라 고객 이탈을 줄이는 데 도움이 되었습니다. 초기 선택의 여파가 여전히 남아있기는 하지만, 그들은 이제 회복 중에 있습니다.
</br>

확장성 문제 해결하기

API의 설계 과정의 일부에는 확장에 대한 계획이 포함됩니다. 모든 API가 매우 높은 초당 요청 (RPS)을 처리해야 하는 것은 아니지만, 예상되는 RPS와 최대 RPS를 아는 것은 아주 중요합니다.

API가 거의 사용되지 않거나 피크 시간에만 사용되는 경우라면 이를 고려하여 클라우드 지출을 줄이기 위해 인프라를 프로비저닝할 수 있습니다. API가 대규모의 부하를 처리해야 하게 될 경우를 대비해 적절한 코드 최적화 및 인프라 구축을 위한 예산을 미리 알아야 합니다.

대형 금융 기관이 이 문제에 직면했습니다. 그들은 단일 API에서 모두 오케스트레이션되는 여러 개의 마이크로서비스를 만들었습니다. 완료되고서, 각 마이크로 서비스에 요청당 2~5초가 필요하다는 것을 깨달았습니다. 더 깊이 파고들자, 그들은 각 마이크로서비스가 순차로 호출되면서 API 요청당 응답 시간이 10-25초라는 것을 알게 되었고 특히, 금융 기관의 요구에 맞추어 정확하게 확장할 수 없었습니다.

API 게이트웨이 구성에 통합된 몇 가지 기본 SLA metrics를 구현함으로써 API 성능 저하에 대해 경고를 받을 수 있었습니다. 또한 각 프로덕션 릴리스 전에 요구 사항으로 성능 테스트를 통합했는데, 이것으로써 릴리스 전에 모든 API가 벤치마크되고 평가되는 것을 보장할 수 있게 되었습니다. </br>

보안 취약점 해결

API 거버넌스는 일반적으로 API 스타일 가이드 및 디자인 검토 프로세스를 통해 보다 일관된 API 디자인을 만드는 것과 관련이 있습니다. 또한 적절한 보안 위험 평가를 보장하기 위해 사용되지만, 해당 디자인 검토 프로세스가 효과적으로 구현되는 경우에만 사용됩니다.

이에 대한 한 사례로, 보안 검토를 회피하려는 소수의 변절자 팀들이 있었던 어떤 대기업을 들 수 있겠는데; 그 결과 감사 중에 식별된 많은 보안되지 않은 API를 찾아냈습니다. 고맙게도 API는 민감한 데이터를 유포하지는 않았습니다. 그러나 팀은 적절한 보안 실무지침을 준수하기 위해 상당한 변경을 해야 했습니다.

그들은 확장된 API 거버넌스 프로세스의 일부로 향후 이를 방지하기 위한 몇 가지 조치를 구현하기로 결정했습니다. 여기에는 프로덕션 승인 전에 보안 팀 중 하나에 의한 승인이 포함되었습니다. 또한 승인되지 않은 외부 대면 배포를 감지하기 위해 자동화된 검사가 구현되었습니다. 마지막으로, API 게이트웨이를 통한 적절한 구성 및 시행을 보장하기 위해 API 설계 검토 프로세스의 일부로 RBAC(역할 기반 접근 제어)가 추가되었습니다.
</br>

효과적인 API 거버넌스

API 거버넌스가 어려운 솔루션일 필요는 없습니다. 대신, 일관성을 만들고 API 문제를 방지하는 데 사용할 수 있는 도구로 간주되어야 합니다. 효과적인 API 거버넌스는 일관된 디자인 타임 및 런타임 API 관심사를 독려하기 위해 만들어진 많은 선택들을 반영하여야 합니다. 자동화 및 셀프 서비스 기능과 결합된 API 거버넌스 프로그램은 조직이 일관된 방식으로 올바른 API를 설계하고 제공하는 데 도움이 될 수 있습니다.