Post

API에 대해 알아보기

API란?

▶ API(Application Programming Interface, 응용 프로그램 인터페이스)는 소프트웨어와 서비스 간의 상호 작용을 가능하게 하는 도구 및 프로토콜의 집합으로 쉽게 말해, API는 두 개의 소프트웨어가 서로 통신하고 데이터를 주고받을 수 있도록 해주는 인터페이스를 말합니다.
API는 다양한 형태로 존재하지만 가장 일반적인 형태는 웹 API입니다. 웹 API는 HTTP 요청을 통해 특정 서비스의 기능을 사용할 수 있게 해주며, REST(Representational State Transfer), SOAP(Simple Object Access Protocol)가 대표적인 웹 API 프로토콜이라 할 수 있습니다.

API의 장점

1. 모듈화와 재사용성
  • API를 사용하면 특정 기능을 모듈화하여 독립적으로 개발할 수 있어 코드의 재사용성이 높아지고, 새로운 프로젝트에서 이미 검증된 코드를 쉽게 사용할 수 있습니다. 예를 들어, 결제 시스템을 개발할 때 이미 검증된 결제 API를 사용하면 직접 개발하는 데 드는 시간과 노력을 줄일 수 있습니다.
2. 호환성과 상호운용성
  • API는 다양한 플랫폼과 언어에서 사용할 수 있도록 설계되어 있어 이를 통해 서로 다른 시스템 간의 호환성과 상호운용성을 보장합니다. 즉, Python으로 작성된 프로그램이 Java로 작성된 서비스와 통신할 수 있다는 점이 하나의 예시라 할 수 있습니다.
3. 확장성
  • API를 사용하면 시스템을 쉽게 확장할 수 있는데 새로운 기능을 추가하거나 기존 기능을 확장할 때 API를 통해 필요한 부분만 수정하면 되기 때문에 편하고 그로 인해 전체 시스템에 미치는 영향을 최소화할 수 있습니다.
4. 보안
  • API를 통해 데이터 접근을 제어할 수 있어 특정 사용자에게만 데이터에 접근할 수 있는 권한을 부여하거나, 데이터 전송을 암호화하여 보안을 강화할 수 있습니다. 여기에 인증 프로토콜까지 추가한다면 더욱 보안된 사용자 인증 및 권한 부여를 통한 관리가 가능합니다.
5. 효율성
  • API를 사용하면 특정 작업을 자동화할 수 있습니다. 예를 들어, 날씨 데이터를 실시간으로 가져올 경우 웹사이트에 표시하는 작업을 API를 통해 자동화로 만들 수 있기 때문에 데이터를 찾는 과정에서 생기는 시간과 개발에 드는 비용을 줄일 수 있습니다.

API의 단점

▶ 장점이 있다면 단점도 있는법! API의 단점에 대해서도 간단히 설명드리겠습니다.

1. 복잡성
  • API를 설계하고 구현하는 과정이 복잡하기 때문에 만약 대규모 시스템을 설계하거나 다양한 기능과 요구 사항이 필요한 경우 이를 모두 충족하는 API를 설계하는 데 많은 시간과 노력이 필요합니다. 또한, API의 버전 관리를 제대로 하지 않으면 호환성 문제가 발생할 수 있어 이 점 또한 항시 유의해주어야 합니다.
2. 의존성 문제
  • 외부 API를 사용하는 경우 해당 API 제공자의 서비스 상태에 의존하기 때문에 만약 지금 사용중인 API의 제공자가 갑자기 서비스를 중단하거나 혹은 API의 버전을 업그레이드하면서 호환성이 깨지는 경우 이를 사용하는 애플리케이션에 문제가 발생할 수 있습니다.
3. 보안 취약점
  • API는 외부와의 통신을 위한 인터페이스이므로 보안에 취약할 수밖에 없는데, 만약 API 키나 인증 토큰이 유출되면 악의적인 사용자가 쉽게 시스템에 접근할 수 있기 때문에 API를 사용할 때는 반드시 철저한 보안 관리가 필요합니다.
4. 성능 이슈
  • API를 통해 데이터를 주고받을 때 네트워크 지연이나 데이터 처리 속도 때문에 성능 문제가 발생할 수 있습니다. 특히, 대량의 데이터를 주고받는 경우에는 이러한 문제가 더욱 심각해질 수 있습니다.
5. 제한 사항
  • 외부 API를 사용할 때는 해당 API 제공자가 정한 사용량 제한이나 요금 정책을 준수해야 합니다. 예를 들어, 무료로 제공되는 API는 일정 사용량을 초과하면 요금을 부과하거나, 더 이상 사용하지 못하게 할 수 있습니다. 이러한 제한 사항은 애플리케이션의 기능을 구현함에 있어 제약을 받을 수 있습니다.


이렇게 오늘은 API에 대해 알아봤는데요,
면접에서도 충분히 나올 수 있는 질문인만큼 미리 공부해두면 좋을 것 같네요! 그렇다면 저는 다음에 또다른 면접에 대비한 내용을 들고오도록 하겠습니다 😁!

This post is licensed under CC BY 4.0 by the author.