개발

남의 API를 붙일 때 생기는 일들

외부 서비스를 연동하면 우리가 제어할 수 없는 부분이 생깁니다. 여러 광고 네트워크를 붙이며 겪은 문제와 대응 방법입니다.

김동선 대표 · 2025-11-07

요즘 서비스는 혼자 돌아가지 않습니다. 로그인은 카카오, 결제는 PG사, 지도는 네이버, 광고는 여러 네트워크. 붙일수록 편해지지만, 그만큼 우리가 어쩌지 못하는 부분도 늘어납니다.

규격이 다 다릅니다

오퍼월을 만들 때 광고 네트워크를 여러 곳 붙였습니다. 하는 일은 다 비슷한데, 규격은 하나도 같지 않았습니다.

  • 어떤 곳은 완료 신호를 보내주고, 어떤 곳은 우리가 물어봐야 합니다.
  • 같은 “완료”를 어떤 곳은 숫자로, 어떤 곳은 문자로 보냅니다.
  • 시간 표기가 제각각입니다. 어떤 곳은 한국 시간, 어떤 곳은 세계 표준시입니다.

이걸 그대로 받으면 코드가 광고사 수만큼 갈라집니다. 그래서 저희는 하나의 우리 규격을 먼저 정하고, 광고사마다 그 규격으로 바꿔주는 얇은 층을 만들었습니다. 새 광고사가 붙어도 바꿔주는 부분만 추가하면 됩니다.

외부 규격을 서비스 안쪽까지 들이지 않는 것. 이게 연동의 핵심입니다.

외부 규격을 바깥에서 변환하는 구조
외부 규격을 바깥에서 변환하는 구조

상대는 언제든 멈출 수 있습니다

외부 서비스는 우리 서비스가 아닙니다. 점검을 할 수도 있고, 갑자기 느려질 수도 있습니다.

준비하지 않으면 남의 장애가 우리 장애가 됩니다. 광고사 서버가 느려졌을 뿐인데 우리 앱 전체가 멈추는 상황이 생깁니다.

그래서 이렇게 막습니다.

  • 기다리는 시간에 한계를 둡니다. 정해진 시간 안에 답이 없으면 포기합니다.
  • 실패해도 앱은 계속 돌아가게 합니다. 그 광고사 미션만 안 보이면 됩니다.
  • 계속 실패하면 잠시 끊습니다. 죽은 서버를 계속 두드리면 우리 서버도 같이 느려집니다.
남의 장애가 우리 장애가 되지 않게
남의 장애가 우리 장애가 되지 않게

예고 없이 바뀝니다

가장 자주 겪는 일입니다. 잘 돌던 연동이 어느 날 갑자기 멈춥니다. 우리 코드는 하나도 안 건드렸는데요.

상대가 규격을 바꿨거나, 정책이 바뀌었거나, 인증 방식이 바뀐 경우입니다. 미리 공지가 오면 다행이고, 안 오는 경우도 많습니다.

이건 막을 수 없습니다. 대신 빨리 아는 것은 가능합니다. 연동이 정상인지 주기적으로 확인하고, 실패율이 올라가면 알림이 오게 해둡니다.

문서를 믿되, 확인하세요

연동 문서와 실제 동작이 다른 경우가 꽤 있습니다. 문서에는 필수라고 적혀 있는데 안 보내도 되거나, 반대로 문서에 없는 값이 필요하거나.

그래서 저희는 연동할 때 실제 응답을 전부 기록으로 남깁니다. 나중에 “이때 저쪽에서 뭘 보냈지?”를 확인할 수 있어야 문제를 풉니다. 특히 돈이 오가는 연동이면 이 기록이 근거 자료가 됩니다.

정리

  • 우리 규격을 먼저 정하고, 외부 규격은 바깥에서 변환합니다.
  • 상대가 멈춰도 우리 서비스는 돌아가게 합니다.
  • 연동 상태를 계속 지켜보고 알림을 겁니다.
  • 주고받은 내용을 기록으로 남깁니다.

연동은 붙이는 데 하루, 안정적으로 유지하는 데 계속입니다. 견적을 낼 때 이 부분을 빼면 나중에 반드시 문제가 됩니다.

카카오톡 문의