
GDG on Campus sookmyung 챕터에 참가하며 2025년 1월부터 2달간 성신여대, 성공회대와 연합 프로젝트를 진행하였다.
우리 팀은 채식을 시작하고 싶지만 어려움을 겪는 사람들을 위해, AI가 쉽고 간편하게 건강한 채식 식단을 구성할 수 있도록 도와주는 맞춤형 식단 추천 서비스를 기획하고 개발했다.
주요 기능
사용자가 먹는 음식이나 요리를 위해 준비한 재료를 사진으로 찍으면,
AI가 사진 속에서 채식주의자가 피해야 할 재료를 찾아내고,
LLM 기능을 활용하여 채식 식단으로서의 균형이 잘 갖추어져 있는지 분석하여 알려준다.
서비스 사용 흐름
- 음식 사진 촬영 및 AI 분석 : 사용자가 먹으려는 음식이나 요리를 준비한 재료를 사진으로 촬영한다. 촬영된 사진은 즉시 AI 서버로 전송되어 음식 재료가 분석됩니다. 이를 통해 사진 속에서 채식주의자가 피해야 할 재료를 빠르게 확인할 수 있다.
- 채식 식단 평가 및 피드백 제공 : AI 서버는 촬영된 음식 사진을 기반으로 사용자의 식단이 채식주의자로서 적합한지, 균형 잡힌 영양 구성을 갖추었는지를 평가하고 피드백을 제공한다. 사용자는 이를 통해 본인의 식단이 얼마나 건강하게 구성되었는지 명확하게 이해할 수 있다.
- 채식 레시피 추천 : 사용자에게 건강한 채식 식단을 위한 맞춤형 레시피를 제공한다. 이를 통해 사용자는 일상 속에서 더 다양하고 건강한 채식 식사를 손쉽게 준비할 수 있다.
- 좋아요 기능 : 사용자는 마음에 드는 채식 레시피나 음식을 "좋아요"로 저장하여, 이후에 먹고 싶은 음식 목록을 관리할 수 있다. 이 기능은 사용자가 선호하는 음식과 레시피를 손쉽게 다시 찾아볼 수 있도록 도와준다.
차별성
다른 서비스는 사용자가 일일이 재료를 확인하거나 검색해야 하고, 음식 속에 어떤 재료가 들어있는지 정확히 알기 어려운 경우가 많다. 하지만 채식탁은 AI가 사진만으로 음식 속의 모든 재료와 채식 여부를 한눈에 쉽게 파악할 수 있도록 해준다.

나의 역할
springboot를 홀로 독학 해오다가 처음으로 프로젝트를 진행하게 되었다. 절대로 민폐 끼치지 말아야지... 라는 생각을 가지고 주어진 1인분을 열심히 해보자는게 목표였다.
- 이메일 인증을 통한 회원가입 / 로그인 / 로그아웃
- 관리자가 레시피를 등록할 수 있는 CRUD 게시판
- 레시피 검색을 할 수 있도록 하는 검색 기능
- 레시피 좋아요 기능
- 사진 데이터를 url 형식으로 바꾸고 AI 서버에 전달, 결과값을 프론트에 전달하는 기능
이번 프로젝트를 통해 STMP 이용해 메일 보내는 법, JWT토큰을 통해 로그인한 사용자의 role을 식별하는 법, 기본 CRUD, 필터링을 통한 검색 기능, 좋아요 누른 레시피를 DB에서 관리하는 법, 실제 사진 데이터를 url형태로 호스팅하는 법 등등 새로운 것들을 많이 배울 수 있었다. 첫 프로젝트에서 목표한 1인분을 달성했고 큰 실수 없이 잘 마무리되서 자신감이 붙었다.

데모데이 당일에는 구글 스타트업 캠퍼스에서 모든 팀들이 모여 각자 팀의 산출물을 소개하는 시간을 가졌다. 중학생때 구글 개발자 특강을 들으며 나도 저사람처럼 개발자가 되고싶다고 생각했었는데 구글 로고가 붙은 곳에 들어가니 기분이 이상했다. 우리팀이 마감기한에 맞춰 잘 했다고 생각했는데 벌써 앱스토어에 등록한 팀도 있었고 더 고도화 해서 출시계획을 갖고있는 팀도 있었다.
데모데이 이후 앞으로의 계획에 대해 생각하며 내가 개발자가 되고싶었던 이유에 대해 생각해보았다. 기술로서 사람들에게 편의를 주고싶다는 거창한 이유를 들먹이며 대학교에 입학했지만 대학교 2학년이 되던 해에 chatGPT가 출시되었다. 위의 프로젝트 또한 채식에 대한 문턱을 낮추고 사람들을 도와주자는 취지에서 진행했지만 사실 정말 돌아가기만 하는 앱이었다. 2명이 동시에 사진 촬영 후 AI분석을 시작하면 둘중 한명은 무한 대기 상태에 빠진다.
처음치고 잘했지만 처음이라서 모르는 부분이 너무나도 많았다. 더미데이터가 몇 건 없어 티가 안났지만 현재 검색 기능으로는 데이터가 많아졌을 때 서버 메모리에 큰 부담이 가는 형태였다. 배포하는 법도 몰라서 다른 팀원이 대신 배포를 담당해주었다. 개발을 할 때에는 내 로컬에서 돌아가기만 하면 된다고 생각했는데 그것이 아니었다. 데이터가 수십만건이 있는 상태에서도, 동시 접속자가 1000명이 넘어가는 상태에서도 내 로컬에서 처럼 똑같이 작동해야 한다.
앞으로는 겉으로는 부족해 보일지라도 안이 단단한 개발을 하자고 다짐했다. 내가 백엔드 개발자로 개발을 시작한 이유도 프론트는 서비스의 얼굴이지만 백엔드는 서비스의 심장이기 때문이다. 단순히 데이터베이스에 저장된 정보를 무식하게 가져오는것이 아니라 성능과 실 서비스로서의 가치를 생각하고 더 나은 개발을 해나가야겠다. 아 배울것이 넘처나고 있다. 초초하지만 동시에 설레는 날이었다.