"시간을 넘어 마음을 전하다."
UMC 연합동아리에서 기획부터 개발까지 참여하여,
Node.js 기반의 타임캡슐 API를 구축하고 2년간 서비스를 운영한 프로젝트입니다.
군 전역 직후, 25개 대학이 모인 IT 연합동아리 UMC(University Makeus Challenge)에 합류하여 진행한 프로젝트입니다.
사용자가 자신 혹은 친구에게 편지를 보내면, 설정한 시간이 되기 전까지는 절대 열어볼 수 없는 '디지털 타임캡슐' 서비스를 만드는 것이 목표였습니다. 단순한 메신저가 아니라 '시간 잠금(Time Lock)'이라는 핵심 기능을 논리적으로 구현하고 데이터 무결성을 지키는 것이 백엔드의 핵심 과제였습니다.
▲ 타임캡슐 전송 및 시간 잠금(Time Lock) 로직 구조도
MySQL을 사용하여 효율적인 데이터 구조를 설계했습니다. 사용자(User), 캡슐(Capsule), 친구 관계(Friendship) 테이블 간의 관계를 정의하고, 특히 캡슐의 '잠금 해제 시간(Unlock Time)'과 '조회 가능 여부(IsOpened)' 상태를 관리하는 필드를 정교하게 설계했습니다.
Node.js를 사용하여 클라이언트로부터 JSON 형태의 편지 데이터를 받아 처리하는 API를 개발했습니다. 현재 시간과 사용자가 설정한 오픈 시간을 서버 단에서 비교 검증(Validation)하여, 클라이언트가 임의로 조작하더라도 시간이 되지 않으면 절대 데이터를 조회할 수 없도록 보안 로직을 구축했습니다.
프론트엔드 팀과의 원활한 소통을 위해 Swagger로 API 명세서를 작성하여 전달했습니다. 또한 개발 초기 CI/CD 구축 과정에서 시행착오를 겪었으나, 이를 해결하여 자동 배포 파이프라인을 완성했고, 데모데이(Demo Day)에 맞춰 성공적으로 서비스를 런칭했습니다.
이 프로젝트는 단순한 일회성 과제로 끝나지 않았습니다. 실제 런칭 후 약 2년간 서비스를 운영하며 사용자들의 피드백을 받고 서버를 유지보수하는 경험을 했습니다. 이 과정을 통해 서비스 생애 주기(Life Cycle) 전반을 이해하는 개발자로 성장했습니다.