개발공부를 하다보면 API, 오픈소스 활용한다는 이야기를 자주 듣게 되실텐데요! 

이제 막 공부를 시작하시는 분들에겐 API가 뭔지, 또 오픈소스는 어떤건지 이해가 잘 가지 않으실수도 있습니다.

인천일보 아카데미와 함께 차근차근 알아가시길 바랍니다 :)​


 

1. API(Application Programming Interface) 

 

 API를 본격적으로 알아보기 전에, 먼저 비유를 들어 쉽게 설명을 해드릴게요. 여러분이 밥을 먹기 위해 식당에 있다고 가정해봅시다.  점원이 가져다준 메뉴판을 보면서 먹고싶은 메뉴를 고르면, 점원이 주문을 받아 요리사에게 전달을 합니다. 그러면 요리사는 정성껏 음식을 만들어 점원에게 주고, 여러분은 점원이 가져다준 맛있는 음식을 먹을 수 있게 됩니다.

 여기서 점원의 역할을 한 번 살펴보겠습니다. 점원은 손님에게 메뉴를 알려주고, 주방에 주문받은 요리를 요청합니다. 그다음 주방에서 완성된 요리를 손님께 다시 전달합니다. 

 이렇듯 API는 손님과 요리사의 접점이 되어주는 점원과 같은 역할을 합니다.

 API는 손님(프로그램)이 주문할 수 있게 메뉴(명령 목록)를 정리하고, 주문(명령)을 받으면 요리사(응용프로그램)와 상호작용하여 요청된 메뉴(명령에 대한 값)를 전달하는 역할을 수행합니다. 쉽게 말해, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체로 볼 수 있습니다.

 좀 더 정확한 정의를 살펴보면 API는 응용 프로그램 인터페이스를 의미하며, 어떤 응용 프로그램에서 특정한 기능을 사용하기 위해 필요한 데이터를 주고받게끔 만든 도구나 방법을 뜻합니다. 포털사이트가 기상 관측 기업의 날씨 정보를 받아서 내보내거나, 코로나 확진자 분포를 지도에 띄우거나, 여러 웹사이트에서 페이스북이나 카카오톡 계정을 통한 간편 로그인을 제공하는 것 역시 API를 통해 이루어집니다.​


 
- API의 역할은?


 1) API는 서버와 데이터베이스에 대한 출입구 역할을 한다.

: 데이터베이스에는 소중한 정보들이 저장되는데요. 모든 사람들이 이 데이터베이스에 접근할 수 있으면 안 되겠지요. API는 이를 방지하기 위해 여러분이 가진 서버와 데이터베이스에 대한  출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해줍니다. 

2) API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 한다.

: 여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 어플이나 프로그램을 말합니다. API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 합니다. 

3) API는 모든 접속을 표준화한다.

API는 모든 접속을 표준화하기 때문에 기계/ 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있습니다. 쉽게 말해, API는 범용 플러그처럼 작동한다고 볼 수 있습니다.

 

- API 유형은 어떤게 있을까?

 1) private API

: private API는 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행합니다. 따라서 제 3자에게 노출되지 않습니다.

2) public API

: public API는 개방형 API로, 모두에게 공개됩니다. 누구나 제한 없이 API를 사용할 수 있는 게 특징입니다.

3) partner API

:partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있습니다. 

비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용됩니다.

 

-API 활용시 이점은?

 

API를 사용하면 많은 이점들이 있는데요.  먼저 Private API를 이용할 경우, 개발자들이 애플리케이션 코드를 작성하는 방법을 표준화함으로써, 간소화되고 빠른 프로세스 처리를 가능하게 합니다. 또한, 소프트 웨어를 통합하고자 할 때는 개발자들 간의 협업을 용이하게 만들어줄 수 있습니다.

public API와 partner API를 사용하면, 기업은 타사 데이터를 활용하여 브랜드 인지도를 높일 수 있습니다. 뿐만 아니라 고객 데이터베이스를 확장하여 전환율까지 높일 수 있는 이점이 있습니다.

 

2. 오픈소스(Open Source) 

누구나 제한 없이 쓸 수 있는 소스 코드 혹은 소프트웨어를 의미하며, 오픈 소스로 배포된 코드는 열람, 수정, 복제, 재배포 등이 자유롭다는 특징이 있습니다. 

한국에서는 공공데이터포털(data.go.kr)을 통해 공개된 오픈 API를 자유롭게 내려받고 이용할 수 있습니다. 

 


-오픈소스 특징

1) 추가 비용 없이 소스 코드 형식으로 제공됩니다. 즉, 사용자는 소프트웨어를 구성하는 코드를 볼 수 있으며, 원하는 경우 얼마든지 변경할 수 있습니다.

2) 소스 코드를 새 소프트웨어에 다른 용도로 사용할 수 있습니다. 즉, 누구든 해당 소스 코드를 활용해 자신의 프로그램을 만들고 이르 배포할 수 있다는 뜻입니다. 

 

-오픈소스 소프트웨어가 중요한 이유는?

오픈소스 소프트웨어는 프로그래머만이 아니라, 모두에게 중요한 요소입니다. 폐쇄형 소스 모델에 비해 오픈소스 모델은 더 많은 사람들이 혁신을 실현할 수 있는 가능성을 열어주기 때문입니다.  예를 들어, 오픈소스 커뮤니티는 기술을 가진 사람은 누구든 참여해 코드에 기여할 수 있는 오픈소스 프로젝트를 기반으로 조직됩니다.  이러한 그룹은 독점 소프트웨어 팀과 마찬가지로 오픈소스 프로젝트에 기여하기 위한 표준을 유지하면서도, 기여하려는 모두에게 이러한 프로세스를 공개하고 있습니다.

 

-대표 오픈소스 개발 모델

이러한 오픈소스 개발 모델을 기반으로 오늘날 많은 사람들이 사용하는 중요한 애플리케이션과 클라우드 플랫폼이 탄생하게 되었습니다. 이중 가장 유명한 것은 대부분의 웹을 지원하는 서비스 스택 모델인 LAMP입니다. LAMP는 다음의 약자입니다.


Linux: 오픈소스 운영 체제(OS)이자 세계 최대 규모의 오픈소스 프로젝트

Apache: 초기 웹에서 핵심 역할을 한 오픈소스 크로스 플랫폼 웹 서버

MySQL: 대부분의 데이터베이스 기반 웹 애플리케이션에서 사용하는 오픈소스 관계형 데이터베이스 관리 시스템

PHP: 소프트웨어 개발에 사용되는 범용 스크립팅 언어(가끔 Perl 또는 Python 언어로 대체됨)


 

-오픈소스 소프트웨어의 이점

 오픈소스 소프트웨어는 초기 웹 및 오늘날 널리 사용되는 일부 애플리케이션에서 중요한 역할을 할 뿐만 아니라, 비즈니스 및 개인 프로그래머에게도 이점을 제공합니다. 소스 코드를 공개하면 누구든 보다 쉽게 연구하여, 새로운 프로그래밍 기술을 개발할 수 있습니다.  


 또한 학생은 오픈소스 라이센스를 통해 코드를 편집하고, 이를 친구 또는 보다 광범위한 오픈소스 커뮤니티와 공유하며, 기존 오픈소스 프로젝트를 수정해 실질적으로 커뮤니티에 기여하는 등 실습을 할 수 있습니다. 

 

 오픈소스 소프트웨어는 기업이 구체적인 요구 사항에 맞게 커스터마이징하거나, 원래 소스코드에는 포함되지 않았던 새로운 사용자 경험으로 혁신할 수 있도록 지원하기도 합니다. 소스 코드가 공개되며 이를 지원하는 활발한 커뮤니티가 있는 경우 더 많은 개발자가 보안 취약점을 찾아낼 수 있으므로 오픈소스 소프트웨어를 선호하는 이도 있습니다. 


여기까지 API, 오픈소스에 대하여 알아봤습니다.

개발 공부를 시작한 분들에게 조금이나마 도움이 되길 바랍니다 :)



-출처 및 참고글: https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces 

https://hamonikr.org/oss/51202