🌏 인트로서비스를 개발하다 보면 생각보다 비동기적으로 처리해야 하는 작업들이 많아진다. LLM 호출한다던지, 외부 API 연동, S3에 저장한다던지 등등 외부와 함께 해야하는 작업이 이어질 때, 응답 지연이 길고, 순차적으로 처리하면 전체 서비스가 느려질 수 있다. 그래서 우리는 보통 “비동기 처리”로 이런 작업을 분리한다. 하지만 문제는, 비동기 처리 과정에서 데이터가 섞이거나 순서가 깨지는 상황이 생긴다는 점이다. 동시에 여러 이벤트가 발행될 때 Race Condition이 발생하는 것이다. 이 글에서는 Spring 환경에서 이벤트 기반 아키텍처를 사용하면서 응답 순서를 보장하기 위해 이벤트를 직렬로 처리하는 방식을 설계한 경험을 공유하고자 한다. 🌏 문제 상황: 비동기 이벤트 처리 시의 순서 ..
PROJECT/AIGOYA LABS
🌏 인트로학부 시절, AI 개발 과정이 지나치게 복잡하고 비효율적이라는 점에서 불편함을 느꼈다. 이를 해결하기 위해 AI 개발 생산성 플랫폼 ‘AIGOYA’를 직접 기획·개발했다. AIGOYA에서는 사용자가 쉽게 AI 개발을 시작할 수 있도록, 모듈 단위의 코드 블록(프리셋모듈) 을 미리 만들어놔서 사용자가 Drag&Drop으로 가볍게 가져다 사용할 수 있는 기능을 제공했다. 베타 사용자의 테스트 기간이 오기까지 수천 개의 프리셋모듈을 만들던 당시 발생한 이슈에 대해 이번 포스팅에서는 정리해보려고 한다. 초기에는 AI 연구실 대학원생들이 직접 제작한 코드 모듈 우리 팀 사람들이 검토하고 제공할 수 있는 시스템을 만들었지만, 베타 사용자 유입 전까지 충분한 양을 확보하기에는 코드가 턱없이 부족하고 일정이..
🌏 AIGOYA란?✅ 프로젝트 개요AIGOYA는 AI 개발에서 발생하는 비효율성을 해결하기 위한 AI 개발 생산성 플랫폼입니다. AI 개발 과정에서 반복되는 전처리, 모델 정의, 학습, 시각화, 평가 등을 프리셋 모듈로 제공하며, 자체 웹 기반 IDE에서 GUI를 활용한 drag-and-drop 개발 환경을 지원합니다. 또한 사용자가 쿠버네티스 기반 클라우드에서 독립된 OS을 점유 사용할 수 있도록 하여, 개발 환경을 손쉽게 구축할 수 있습니다. 부가적으로는 학습 파라미터, 코드 버전, 결과를 함께 저장 관리할 수 있어 프로젝트 추적이 용이하고, 코드 모듈을 공유하고 자신만의 AI 개발자 포트폴리오를 구성할 수 있는 커뮤니티 기능을 제공합니다.해당 프로젝트는 2024년 4월 시작되었으며, 인공지능융합사..
🌏 인트로서비스를 개발할 때 종종 마주하게 되는 문제 중 하나는 외부 API 호출과 데이터 저장을 어떻게 함께 처리할 것인가이다. 특히 LLM이나 외부 시스템과의 연동은 언제든지 실패하거나, 지연될 수 있는 잠재적 위험을 내포한다. 내 애플리케이션을 아무리 잘 만들더라도, 외부 서버가 다운 되어있거나, 데이터의 형식이 변경된다던가 무튼 아무리 내가 잘 개발하더라도 언제든 호출이 제대로 되지 않을 수 있다는 말이다.이번 글에서는 Kotlin + Spring Boot 환경에서, LLM 응답 처리와 DB 저장을 분리하여 트랜잭션을 효율적으로 관리한 경험을 소개하려고 한다.🌏 문제 상황: 모든 처리를 트랜잭션으로 묶은 경우@Transactionalfun processAllAtOnce(input: Input)..