brunch

You can make anything
by writing

C.S.Lewis

by 디이프 Apr 30. 2024

디이프의 자원관리 계획 공유

이전에 작성하였던 자원관리 경험에 더불어, 이번 글에서는 활용하고자 하는 사항에 대해서 공유해 드리겠습니다.




식품 데이터는 현재 자사가 제공하려는 다양한 헬스케어의 여러 기술과 추가 데이터를 생성하는 데에 가장 중요한 기반입니다. 하지만 이 식품 데이터를 내재화하는 과정에서, 일부분 수동적으로 작업을 진행하고 있었던 것을 알게 되었는데요, 따라서 더욱 편한 방법이 무엇이 있을까 살펴보던 중, 식품 데이터를 제공하는 곳에서 Open API 또한 제공한다는 것을 발견했습니다.



I. Open API?

우선 API란 Application Programming Interface로, 서로 다른 구성요소 또는 서비스와 상호 작용하기 위한 규칙(Interface)을 제공하는 기술입니다. 쉽게 말하면 상호 간에 통신 방법 및 규칙을 규정하고, 이를 기반으로 요청을 주고받을 수 있도록 하는 도구입니다.

그렇다면 Open API란 무엇일까요? 단어 그대로 ‘Open’이라는 단어가 주는 의미가 덧붙여져, 누구나 사용할 수 있도록 ‘공개된’ API를 의미합니다. 즉, 공개된 규격을 통해 외부 소프트웨어 개발자나 사용자가 바로 다른 개발에 사용할 수 있는 형태의 API죠.

공개된 API를 통해, 우리는 필요한 데이터와 서비스 동작을 더욱 효율적으로 접근 및 응용할 수 있습니다. 잘 알려진 예시로는 여러 웹, 앱에서 사용되는 카카오 로그인 API를 들 수 있죠.




그럼 다시 돌아와서, 우리가 현재 필요로 하는 식품 데이터와 관련한 Open API 제공기관을 찾아보면, 많은 곳에서 API를 제공하고 있는 것을 확인할 수 있습니다. 이 중에서 우리는 데이터와 API를 통합 제공하는 ‘공공데이터 포털’에서 ‘식품의약품안전처’의 공개 API를 간단하게 사용해 보겠습니다.



II. 예시

아래의 이미지는 ‘식품의약품안전처’의 ‘식품 영양 성분 정보’ 데이터를 Open API 활용 가이드에 따라 ‘조회’하는 동작의 python 코드입니다. 

활용 가이드에 따라 서비스 URL에 요청 구성을 담아 요청을 전송하였고, 이를 통해 원하는 결과 출력(json)을 받을 수 있습니다.

[1페이지의 3개의 식품 데이터를 조회하는 코드]



조회 결과를 통해 우리는 현재 ‘식품 영양 성분 정보’ 데이터 1페이지에 ‘겉 귀리, 생것’이라는식품이 있는 것을 알아냈습니다. 그렇다면 3개의 식품 데이터가 아닌, 특정 상세 영양 정보를 보고 싶다면 어떻게 해야 할까요? API 가이드라인에 따르면, DESC_KOR 키에 식품명을 넣어 요청을 보내면 특정 식품 데이터를 조회할 수 있게 됩니다.



III. Open API의 장단점

이렇게 Open API를 사용하면 이미 완성되어있는 특정 동작이나 데이터를 간단하게, 실시간으로 가져와 필요에 맞게 사용할 수 있다는 장점이 있습니다. 그로 인해 서비스 및 데이터베이스 구축 시에 드는 비용과 시간을 줄일 수 있고, 다른 서비스나 애플리케이션들과 쉽게 통합 및 확장을 가능하게 하죠.

하지만 그만큼의 단점 또한 존재합니다. 바로 API를 공개하는 만큼, 외부로부터의 접근 경로가 늘어나는 보안 문제를 피할 수 없고, 외부 서비스나 플랫폼의 API에 대한 의존도가 높아져 Open API의 상태로부터 오는 영향을 피할 수 없습니다.



IV. 마치며

위와 같이 많은 이점과 단점을 가지고 있는 Open API이지만, 현재 디이프 서비스의 개발이나 더욱 빠르고 효율적인 자원 내재화와 기술개발을 위해서 Open API 사용을 적극적으로 활용해볼 계획입니다. 목적과 비슷한 API를 찾는 것과 활용하는 단계가 오래 걸릴 수 있지만, 향후 기술 발전에 조금이라도 간편함을 줄 수 있다면, 논의 및 공유를 통해 존재하는 외부 자원을 적극적으로 활용해볼 계획을 하고 있습니다.  



Reference

https://www.hanl.tech/blog/api%EB%9E%80-api%EC%9D%98-%EC%A0%95%EC%9D%98%EC%99%80-%EC%A2%85%EB%A5%98-%EC%9E%A5%EB%8B%A8%EC%A0%90/

https://data.busan.go.kr/index.nm?contentId=36

https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88_API

https://blog.naver.com/ssossing/221743243863

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari