개발자

IDG 블로그 | “API스럽게” 개발하고 있습니까?

Yves de Montcheuil  | Network World 2014.12.19
공대 학부생 시절, 컴퓨터 과학 수업에서 프로그래밍 언어의 이론에서부터 실제 코딩 프로젝트 개발 방법론에 이르기까지 아주 다양하고 흥미 있는 과목을 이수했다. 파스칼(Pascal), 에이다(Ada), 포트란(Fortran), SQL, C 언어뿐만 아니라 최신 언어인 C++ 등 다양한 프로그래밍 언어를 익힌 덕분에 프로그래밍을 ‘조금’ 할 줄 안다. 현재는 소프트웨어 마케터로 일하고 있기 때문에, 코딩은 필자가 내세울 만한 강점이 아니라는 점을 밝혀둔다.

이 와중에 C++ 수업에서 가장 강조된 패러다임은 바로, 재사용이 가능한 코드 단위의 개발인 ‘객체 지향’이었다는 것이 기억난다. 파스칼 프로그래밍 기초 수업을 이수한 적이 있는데, 나와 내 동기들은 C++ 수업에서 파스칼과 동일한 기법으로 코딩하는 데 별 어려움을 못 느꼈다. 이 때문에 교수님에게는 컴퓨터 공학도의 마음에 객체 지향이라는 개념이 자리 잡도록 하는 것이 매우 중요한 과제였다. (조선 시대에 있을 법한 일들을 이야기하는 것처럼 들리겠지만, 코볼(COBOL)과 같은 더 오래된 언어와 기술이 있다는 것을 감안한다면 그렇게 세대차이가 나는 이야기가 아니다.)

최근 애플리케이션 아키텍처를 살펴본다면, 서로 다른 개발 환경이라 할지라도 동일한 개념이 적용되고 있다는 것을 알 수 있다. J2EE와 같이 십여 년 전에 개발된 애플리케이션의 경우, 애플리케이션 서버에서 동작하는, 규모가 큰 모놀리식 시스템으로 구축됐다. 물론, 자바의 컨셉이 C++과 상당히 유사한 점은 있으나, 애플리케이션 전체를 통합 설계하고, 개발하고, 유지보수해야 한다.

SOA(서비스 지향 아키텍처)와 엔터프라이즈 서비스 버스로 일체형 개발의 일부 과제를 해결하기도 했다. 그러나 SOA는 매우 복잡했기 때문에 애플리케이션 계층 밑단에 무엇인가를 추가하기가 어려웠다. 이 두 솔루션은 모듈형 애플리케이션을 구축하는 과제를 해결할 수는 없었다.

오늘날의 많은 애플리케이션은 API를 통해 상호 작용할 수 있는 기능과 서비스의 집합체로 설계된다. 최근 트렌드는 소프트웨어 아키텍처 디자인 패턴 가운데 하나인 마이크로서비스다. 프로그래밍 언어에 구애받지 않는 API를 활용해서 서로 통신하는 작고 독립적인 프로세스로 복잡한 애플리케이션을 구현한다. 마이크로서비스가 어떤 언어로 개발되는지는 중요하지 않은데, 이와 같은 상호작용은 표준화된 RESTful API를 통해 수행되기 때문이다.

API 또한 애플리케이션과의 상호 작용과 통합을 위해 추상화 기법을 사용한다. 현대의 프로그래밍 기술은 다른 개발자도 자신의 제품에 손쉽게 적용할 수 있는 API를 통해 데이터와 비즈니스 프로세스를 노출한다.

애플리케이션이 한데 어우러져 잘 작동하도록 만들기 위해서는 한 애플리케이션에서의 변화로부터 다른 애플리케이션을 보호하거나, 다른 서비스에서의 변화에서 한 서비스를 보호하는 것이 핵심이다. 이것이 바로 적절한 인터페이스를 제공하는 이유다. API 개발자는 다른 시스템에서 사용되는 인터페이스를 바꾸지 않는 선에서 자유자재로 기본 비즈니스 로직을 변경할 수 있다. 이 방법을 활용해서 백엔드 프로세스를 업데이트할 경우, 모바일 앱과 해당 서비스를 사용하는 수십 개의 애플리케이션을 동시에 업데이트하는 데 수천 또는 수백만 번이나 재배치하지 않아도 된다.

물론, API 스타일로 애플리케이션을 개발하고 싶다면, API를 관리하는 방법에 대한 몇 가지 규칙을 준수해야 한다. editor@itworld.co.kr
Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.