개발 일지 [AI 비서 프로젝트 - 기획]
2026. 1. 18. 19:04ㆍ개발 일지/개인 프로젝트
[DevLog] 노코드 툴(Make)을 벗어나 직접 만드는 AI 비서
일단 이 프로젝트를 시작한 계기는,,,
용돈 벌이로 그림 커미션을 받기로 결심하고 운이 좋게 일들이 많이 들어와 작업을 시작하기 몇 개월, 여러모로 일이 많이지면서 점점 생활 리듬이 깨지기 시작했다. 지금와서 돌아보면 하루에도 몇 개씩 일을 쳐냈지만 그 당시엔 따로 기록을 안해서 내가 일을 했다는 사실이 와닿지 않았다. 그러니까, 달에 20건은 했던 걸로 기록이 남아있는데 그 땐 진짜 일주일에 하나 그리는 정도로 느낄만큼 객관적인 인지가 불가능했다. (그래서그랬는지 일을 쳐내는데 급급해져서 더 무리를 했지.) 그러다 몸 컨디션이 완전 망가져서 일주일은 골골거리고 한 달은 쉬면서 회복해야했다... 컨디션이 안좋으니 소화도 못해, 생리도 끊겨, 입맛도 사라져서 살은 빠지고 덩달아 힘은 없어지고... 체력도 없어지고... (이 때 장염에 위염에 다래끼(?)까지 한 번에 와서 힘들었음)
그러다 다이어리를 쓰기 시작했는데, 일이 진행되고 쳐내지는 게 눈에 보이니 컨디션 조절이 수월해진 것을 느꼈다.
그렇게 해서 아무래도 컴공 전공자니 직접 대충 할 일 던지면 분석해서 일정으로 정리해주는 프로젝트를 만들어보자..! 라는 생각이 탄생했다.
음.. 무맥락으로 보이지만 아무튼 그렇다.
사실 그리 오래되진 않았지만 체감상 코딩과 멀어진 느낌에 MAKE 툴을 사용해서 간단하게 구현해볼 생각을 했다.
그런데 생각보다 무료 버전의 제약이 많고 돈을 쓰고 싶지는 않아 그냥 직접 구현해보기로 했다.
난... 전공자니깐..!
...!
1️⃣ 왜 노코드를 버리고 직접 만들기로 했지?
처음엔 Make(구 Integromat) 같은 노코드 툴이 정말 편했다. 버블로 로직이 눈에 잘 보이고, 몇 가지 입력만하면 되는 간편함?
하지만 실제로 써보니 한계가 명확했다. (무료 기준)
⏱ 지연 시간(Latency)
무료 플랜 기준으로 15분 단위 스케줄링은
답답했다.
메시지를 보냈는데 15분 뒤에 답이 온다? 내 성격엔 못 기다린다.
→ 직접 구축하면 event 트리거로 바로바로 반응할 수 있지 않나?
💸 비용과 사용량 제한
Operation 수 제한 때문에
“이 기능을 추가해도 될까?”를 계속 고민해야 했다.
로직을 설계하는 내내 테스트 가동 조차 제약받는 느낌이 들었다.
→ 코드로 만들면 사용량은 내 서버 문제, 즉 일단 자유다.
🧠 복잡한 로직의 한계
* 중복 데이터 처리
* 상태 관리(State Management)
* 조건이 많은 분기 로직
이런 것들은 노코드 툴에서 점점 다루기 힘들어졌다. 찾아야하는 설정 값도 찾아야하고 router로 분기를 나누고
결국 이 정도면 코드로 직접 설계하는게 빠르겠다는 결론에 도달했다. ㅎㅎ..
---
2️⃣ 가장 중요한 개념 정리: 동기(Sync) vs 비동기(Async)
이 프로젝트에서 제일 먼저 정리해야 했던 개념이 바로 이거였다. 학부에서 배운 기억은 나는데 적용하자니 백지가 되어버리는,,,
그래서 다시 공부해왔다!
🔁 동기(Synchronous)
* 앞선 작업이 끝날 때까지 다음 작업은 대기
* 구조는 단순하지만 Blocking 발생
* 외부 API 응답이 느리면 전체 흐름이 멈춘다
// Gemini 답변이 올 때까지 3초간 봇 전체가 멈춤
const response = getGeminiSync(message);
message.reply(response);
🔀 비동기(Asynchronous)
* 작업을 요청하고 기다리지 않음
* 결과가 오면 미리 정의된 후속 작업을 처리
* Non-blocking, 동시 처리 가능
// 요청을 던져놓고, 다른 일을 하다가 답변이 오면 실행됨
getGeminiAsync(message).then(response => {
message.reply(response);
});
// 이 아래 코드는 위 답변을 기다리지 않고 바로 실행됨
이제 와 말하자니 부끄럽지만 타 프로젝트를 할 때 많이 사용했던 코드다. 그 땐 완성에 눈 먼 나머지 일단 '되긴하는데... 왜지... 저거랑 다른게 뭐지...' 만 영원히 마음 속으로 남발하며 사용했지만 이제는 알겠다. ...👀
💡 왜 이 프로젝트에는 비동기를 사용하지?
이 프로젝트는 전형적인 I/O Bound 작업 덩어리다.
* AI 응답 생성: 2~3초
* Notion DB 조회/업데이트: 약 1초
* Discord 메시지 송신: 네트워크 대기
대기가 많다! 그렇다면 비동기가 옳다!