- 0장에서는 앞으로 개발할 아키텍처에 필요한 API의 기본 개념과 잠재력을 느낄 수 있는 계기를 마련함
- API에 대한 소개와 프로세스 내외부에서 API를 사용하는 방식 설명
API에 대한 간략한 소개
소프트웨어 아키텍트 분야에는 정의하기가 너무나 어려운 용어들이 몇 가지 있음. 80년대에 처음 그 개념이 등장했던 애플리케이션 프로그래밍 인터페이스(application programming interface)의 줄임말인 API도 그런 용어 중 하나임.
우리는 API의 의미를 다음과 같이 정의함
- API는 기반 구현에 대한 추상화를 표현함
- API는 타입을 정의하는 명세로 표현함. 개발자는 명세를 이해할 수 있고 도구를 이용해 API 소비자(API를 사용하는 소프트웨어)를 여러 언어로 구현함
- API는 정보의 교환을 효과적으로 모델링하기 위한 의미 또는 행위로 정의함
- 효율적으로 설계된 API는 비즈니스 통합을 위해 고객이나 서드파트로의 확장이 가능함
대체로 API는 API 호출이 인 프로세스(in-process)인지 아웃 오브 프로세스(out-of-process)인지에 따라 두 가지로 구분할 수 있음
→ 여기서 프로세스란 운영체제 프로세스임
ex)
- 자바의 한 클래스에서 다른 클래스의 메서드를 호출하는 것은 해당 호출이 호출을 유발한 프로세스와 같은 프로세스 안에서 실행되기에 인 프로세스 API 호출
- 닷넷 애플리케이션이 HTTP 라이브러리를 이용해 REST 형식의 외부 API를 호출한다면 이 호출은 호출을 유발한 프로세스가 아닌 외부의 프로세스에 의해 처리되기에 아웃 오브 프로세스 API 호출
- 보통 아웃 오브 프로세스 API 호출은 로컬 네트워크, 가상 비공개 클라우드(virtual private cloud=VPC) 네트워크 또는 인터넷 등 네트워크를 통해 데이터를 전달함
→ 책에서는 아웃 오브 프로세스 API에 집중함
→ 하지만 아키텍트는 인 프로세스 API를 아웃오브 프로세스 API로 재구성해야 하는 요구사항을 자주 접함