"연인은 왜 저런 반응을 할까?", "이럴 땐 어떻게 대응해야 하지?"
말모(Malmo)는 연인 사이의 갈등과 고민에서 출발한 애착 유형 기반 AI 연애 갈등 상담 앱입니다.
MZ세대는 연인과의 갈등 원인으로 '의사소통 방식'과 '성향 차이'를 가장 많이 꼽았으며, 자신과 연인을 이해하려는 니즈가 높습니다.
말모(Malmo)는 사용자와 연인의 애착 유형 데이터를 기반으로 갈등 상황을 분석하고, 관계 개선을 위한 맞춤형 조언을 제공하는 서비스입니다.
- ECR 검사 문항 기반 애착 유형 진단
- 커플 연동으로 서로의 결과 공유 및 AI 상담에 활용
- 채팅으로 갈등 상황 입력 → AI가 애착 유형 기반 상담 제공
- 상담 종료 후, 요약 리포트 제공
- 매일 새로운 커플 질문 제공
- 누적 답변은 AI 상담 분석에 활용 + 커플 레벨 상승 요소 제공
| Category | Tools & Technologies |
|---|---|
| Frameworks | |
| Language | |
| Persistence | |
| Database | |
| Cloud (AWS) | |
| Messaging | |
| Container & DevOps | |
| Monitoring | |
| Documentation | |
| Testing | |
| CI/CD |
https://dbdiagram.io/d/malmoerd-669f3b458b4bb5230e11b2d0
본 레포지토리는 Git Flow 전략을 변형하여 다음과 같이 브랜치를 운영합니다.
- main : 운영 환경에 배포된 최종 코드
- release : 배포 대상이 되는 안정화 브랜치
- develop : 기능 개발 통합 브랜치
- feature/* : 단일 기능 개발 브랜치
- 기능 개발은
feature/*브랜치에서 진행합니다. - 기능이 완료되면
develop브랜치에 먼저 병합합니다. - 배포 대상 기능이 확정되면
release브랜치로 병합합니다.
배포 시점에 release 브랜치에 커밋할 때는 Commit 메시지 규칙을 반드시 따라야 합니다.
해당 메시지는 GitHub Actions CI/CD 과정에서 Blue/Green 배포 방식을 결정하는 기준이 됩니다.
-
형식
<type>: <subject> -
type
이전 커밋의 타입 명의 반대 타입으로 배포해주세요.
release-blue: Blue 환경으로 배포release-green: Green 환경으로 배포
-
subject
- 배포할 기능/개발 내용을 간략히 작성
예시:
release-blue: 로그인 기능 개선 및 에러 처리 추가
release-green: 결제 모듈 업데이트
release브랜치에 커밋(Push) → GitHub Actions가 실행됩니다.- 커밋 메시지의
type값(release-blue또는release-green)에 따라 Blue/Green 중 하나로 배포됩니다. - CI/CD 과정이 완료되면 Nginx 설정 파일을 Blue/Green에 맞게 업데이트하여 최종 배포를 마무리합니다.
-
애착 유형과 연애 질문 등 사용자의 메타 데이터를 바탕으로 한 AI 연애 상담 챗봇 구현
-
단계별 상담 구조 설계 및 프롬프트 엔지니어링
안정적인 단계 전환을 위해 'LLM-as-a-Judge' 방식 도입
-
SSE 통신 방식을 이용한 GPT 응답 스트리밍
-
Redis Stream을 도입으로 안정적인 외부 API 호출 관리
-
트랜잭션 아웃박스 (Transactional Outbox) 패턴 적용으로 메시지 발행 보장
-
외부 API의 도메인 영역 침범을 분리하기 위해 헥사고날 아키텍처를 적용, 확장 가능성 확보
-
사용자 프라이버시 보호를 위한 AI채팅 기능 DB 암호화 도입
-
도메인 독립성을 검증하고 외부 어댑터 의존성을 제거하기 위한 Mockito 단위 테스트 및 기획 검증을 위한 통합 테스트 코드 작성으로 코드 커버리지 77% 달성
-
사용자와 애인의 연동을 통한 애착 유형 검사, 연애 질문 기능 개발
-
Prometheus Grafana 모니터링 대시보드 구축
-
단일 인스턴스에서 nginx와 도커 컨테이너를 이용해 블루-그린 배포
-
코드 중복을 줄이고 유지보수성을 확보하기 위해 Spring AOP 도입
-
도메인 순수성 유지를 위해 생성자 접근을 제한



