brunch

You can make anything
by writing

C.S.Lewis

by 디이프 Oct 25. 2023

[Resource] 디이프의 자원관리 경험 공유 II


지난 브런치에 글에 이어서, 자원관리 경험에 대한 공유를 이어가겠습니다. 이전에 말씀드린 대로, 디이프는 식품 데이터와 헬스케어를 연결하는 여러 데이터 모델링 기술과 데이터베이스를 보유, 관리하고 있습니다. 이전 시간에는 이러한 다양한 자원들을 접근 및 관리하는 측면에서의 경험을 공유해 드렸는데요, 오늘은 자원들을 실제 디이프 서비스에 어떻게 적용하여 활용하는지에 대한 경험에 대해 공유해 드리고자 합니다.




I. 배경 

우선 여러 자원이 서비스에 적용되기 위해서는 고유의 특성대로 잘 정리되어있고, 접근­이 간편해야 했습니다. 따라서 Pantry라는 주제를 기반으로 공유한 바와 같이, FastAPI를 활용하여 각 서버에서 관리 중인 자원에 접근하고, API를 통해 관리와 업데이트를 할 수 있도록 하였습니다.

그리고 이러한 업데이트 사항이 모여 특정한 목적이 있는 알고리즘이 되는데요, 이 알고리즘이 여러 서비스에 주로 어떤 방식으로 적용되는지 예시와 함께 살펴보겠습니다.


II. 서비스 예시

가장 자원 활용이 잘 된 예시로는 유전체, 질병, 대사체, 식품들이 연결된 바이오 복잡계 데이터베이스인 iF® Core를 그 예로 들 수 있습니다. 물론 iF® Core는 디이프가 만들어 나갈 서비스들의 가장 근간이 되는 기본 콘텐츠이지만, 단순히 데이터로서만이 아니라 또 다른 형태로 서비스에 적용되고 있고, 이를 통해 콘텐츠가 가진 본질을 제한 없이 활용하여 서비스를 만들어 가고 있습니다. 그 예시가 바로 iFood와 iF® API입니다.


iFood와 iF® API는 현재 동일한 콘텐츠, 즉 iF® Core 데이터를 활용하고 있습니다.

서로 다른 서비스 내에서, 그리고 관련 알고리즘 동작이 다르게 활용 되어야 할 상황에서 어떻게  iF® Core의 콘텐츠가 각각 적용되어 사용할 수 있었을까요? 디이프는 이와 관련하여 파이썬을 기반으로 한 웹 프레임워크인 Django와 파이썬 패키징을 활용하기로 하였습니다.


III. 파이썬 패키지와 Django

우선 파이썬 패키지가 무엇인지 간단하게 말씀드리자면, 여러 클래스, 함수, 변수를 가지고 있는 파이썬 파일, 즉 하나의 모듈이 관련 있는 것끼리 집합을 이루고 있는 것을 패키지라고 합니다.

따라서 각 콘텐츠를 서비스별로 어떻게 활용할지에 따라, 알고리즘 구현이 과정에서 여러 모듈과 파일, 데이터를 구성하게 되는데요, 이를 통해 생성된 알고리즘 모듈들은 pip(파이썬 패키지 매니저)를 통해 다른 파이썬 모듈 내에서 사용 가능한 상태로 만들게 됩니다. 

대표적인 예로는 iF® Core 데이터와 사용자 정보를 기반으로 맞춤형 식품을 추천해주는 알고리즘이 담긴 ‘iF Search’ 패키지를 들 수 있고, 현재의 iF® API 서비스는 이 패키지를 가장 잘 사용하고 있는 사례로 들 수 있습니다.


iF Search 패키지 예시
iF® API 내에 설치된 iF Search 패키지



그리고 이외에도 특정 알고리즘이나 공통된 동작을 모두 패키지화하고 있으며, 목적에 맞게 서비스 프로젝트 및 환경에 설치/업데이트하여 서비스 내의 주요 기능으로 동작하고 있습니다.


여기까지의 과정을 보면 필요에 따라 패키지들을 pip로 설치 후, 서비스 동작에 반영시키면 그만이지 않냐는 생각이 떠오르는데요, 하지만 각 서비스의 버전과 세부 요구사항에 따라 수정과 적용이 다르게 이루어져야 할 때가 많습니다.

 

따라서 이때, Django의 역할이 등장하게 됩니다.

Django는 기본적으로 웹 애플리케이션을 빠르게 구축할 수 있는 프레임워크입니다. 그리고 무엇보다 자체적으로 제공하는 관리자(admin) 기능이 있다는 큰 장점이 있는데요, 특히 장고와 연계되는 데이터베이스의 조회, 수정 삭제, 추가와 같은 기본적인 작업을 admin 페이지에서 쉽게 진행할 수 있습니다. 따라서 현재 iF® API 서비스에서는 아래와 같이 패키지 관리를 위한 모델(테이블)을 생성하여, 데이터와 패키지의 버전, 로그, 데이터 활성 유무 등을 admin 인터페이스를 통해 직관적으로 확인하고 업데이트하는 상태입니다.


iF® API의 admin 페이지
패키지 적용 예시

또한 제공 중인 서비스인 iFood에서도 위와 동일하게 Django를 기반으로 iF® Core의 데이터를 관리, 적용하고 있는데요, iF® Core에 있는 데이터를 특정 서비스 기준에 맞게 재정렬하여 Django 테이블을 만들고, admin 페이지를 통해 필요에 따라 서비스에 적용을 시키고 있습니다.


IV. 마치며

요약하자면 하나의 콘텐츠를 다양하게 활용하기 위해, 목적을 가진 알고리즘 스크립트들이 패키징된 후, 이 패키징된 데이터와 동작을 다양한 기준으로 쉽게 관리할 수 있게 해주는 Django admin을 통해 디이프의 전반적인 서비스들이 구동되고 있는 상태입니다.

어떻게 보면 더 좋은 기능과 편의를 주는 다양한 도구를 사용한 것은 아니지만, 가장 기본적인 방법에 기반하여 간결하게 현재까지의 서비스들을 만들어왔습니다. 따라서 앞으로도 디이프만의 고유한 서비스 설계방식을 계속해서 고민해 나갈 것이며, 이에 따라 더 나은 경험을 공유할 수 있도록 노력하겠습니다. 



Reference

https://benn.tistory.com/46

작가의 이전글 디이프의 API 모니터링 지표
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari