FutureByte

목차

  1. 사이드 프로젝트 개요
  2. [24.04 ~ 24.07] Petting, 반려견 성격유형검사 서비스
    1. Product
    2. Project
    3. 주요 기능
    4. 개발 성과
  3. [24.02 ~ 24.04] Oh-Manager, 신인 배우의 오디션 중계 플랫폼
    1. Product
    2. Project
    3. 주요 기능
    4. 개발 성과
  4. [23.10 ~ 24.02] FOLDER, 패션 서치 커뮤니티
    1. Product
    2. Project
    3. 주요 기능
    4. 담당 작업

사이드 프로젝트 개요

항목내용
목적다양한 서비스 아이디어 검증 및 실제 서비스 출시를 목표로 기획, 디자인, 개발 전 과정을 경험하기 위한 사이드 프로젝트
참여 인원총 6명 (PO/PM 1명, 서비스 기획 1명, 디자이너 1명, BE 1명, FEs 2명)
진행 기간2023.10 ~ 2024.07 (약 8개월)
담당 역할BackEnd API 개발 및 인프라 구축 및 유지보수

[24.04 ~ 24.07] Petting, 반려견 성격유형검사 서비스

Product

항목내용
기간2024.04 ~ 2024.07 (약 2개월)
목적반려견의 성향을 기반으로 적합한 친구를 매칭하고, 견주들이 반려 경험과 정보를 공유할 수 있는 커뮤니티 및 소통 플랫폼 구축
문제 정의반려견 관련 정보를 공유하고 같은 경험을 가진 견주들과 소통할 수 있는 전용 서비스가 부족하며, 기존 커뮤니티는 정보 탐색 중심으로 반려견의 성격과 특성을 고려한 관계 형성에는 한계가 존재. 또한 반려견의 사회성 향상을 위한 강아지 친구 만들기 과정에서도 개별 성향을 고려한 매칭 환경이 부족함
주요 기능PDTI(반려견 성향 분석) 기반 맞춤형 친구 매칭, 견주 간 1:1 채팅 기능, 매칭 성공 사례 및 반려 경험 공유 커뮤니티 제공
대상 사용자반려견의 성향에 맞는 친구를 만들어주고 싶은 견주, 반려견 관련 정보를 공유하거나 다른 견주들과 교류하고 싶은 반려인

Project

항목내용
담당 역할백엔드 API 개발 및 AWS 인프라 유지보수
기술적 특징Classical Mapping 아키텍처: SQLAlchemy map_imperatively() API를 구현하여 테이블 데이터 모델과 비즈니스 엔티티를 물리적으로 완전 분리
공간 데이터 및 외부 API 연동: Kakao Local API를 통해 유저 주소 유효성을 실시간 검증하고 경위도 좌표를 자동 추출해 근접 매칭 인프라 구축
이벤트 기반 결합도 개선: 미디어 업로드와 리워드 지급 로직을 도메인 이벤트(Domain Event) 발행-구독 패턴으로 격리하여 유지보수성 최적화
기술 스택Python 3.10, FastAPI, SQLAlchemy, MySQL, dependency-injector, boto3 (AWS S3), requests, PyJWT, Aligo SMS API, Kakao Local API, Docker
RepositoryGithub Repository

주요 기능

  • PDTI (반려견 성향 분석) 및 성격 유형 검사: 반려견 성향 및 행동 양식을 진단할 수 있는 자체 성격유형검사(PDTI) 기능 제공
  • 성향 기반 맞춤 친구 매칭: PDTI 결과를 기반으로 사회성 및 성향이 잘 맞는 근접 강아지 매칭 및 친구 추천 기능 구현
  • 위치 기반 행정구역 및 근접 탐색: 유저 주소 검증과 공간 좌표 기반의 내 주변 반려견 탐색 환경 수립
  • 견주 간 실시간 채팅 및 반려인 소통 커뮤니티: 1:1 매칭 채팅 및 반려 지식을 공유하고 매칭 성공 사례를 등록하는 커뮤니티 게시판 운영

개발 성과

  • 도메인 독립성 극대화를 위한 SQLAlchemy Classical Mapping 아키텍처 설계
    • 문제: 기존 Declarative Mapping 방식은 데이터베이스 테이블 스펙과 비즈니스 엔티티가 강력하게 결합하여 데이터베이스 기술 스펙(SQLAlchemy)의 변경이 비즈니스 규칙에 직접적인 사이드 이펙트를 주고 단위 테스트의 격리도를 저하시키는 위험이 존재했음.
    • 해결: 순수한 도메인 속성만을 담은 엔티티(MemberEntity 등)와 RDB 테이블 사양을 관리하는 데이터 모델(orm.Member 등)을 완벽히 분리하고, SQLAlchemy의 map_imperatively() API(Classical Mapping)를 활용해 이를 런타임에 동적으로 주입 및 연결시킴.
    • 성과: 영속성 기술과의 완벽한 의존성 역전(DIP)을 이룸으로써 핵심 도메인을 외부 프레임워크 오염 없이 보호하고, 순수한 비즈니스 연산에만 집중된 고신뢰 단위 테스트 환경을 구축함.
  • Kakao Local API 연동을 통한 주소 유효성 검증 및 경위도 공간 데이터 정제 자동화
    • 문제: 견주가 텍스트로 임의 입력한 주소는 데이터 정합성을 해쳐 근접 강아지 친구 추천 및 매칭 쿼리의 효율을 저하시키는 위험 요소였으며, 위치 기반 기능에 필수적인 위도·경도 좌표 데이터를 수집할 정밀한 입력 채널이 부재했음.
    • 해결: 외부 Kakao Local API를 Dependency Injector IoC 컨테이너를 통해 어댑터로 통합하고, 유저가 프로필 작성 시 주소를 입력하면 해당 주소의 실제 존재 여부를 실시간 필터링하도록 설계함. 주소가 검증될 경우 행정구역 분류(시도/시군구/읍면동/도로명) 및 소수점 5자리 정밀도로 반올림된 경위도 좌표를 자동으로 추출하여 영속성 계층에 동기화함.
    • 성과: 사용자 입력 오류로 인한 주소 불일치를 차단해 정합성 100%를 유지하였으며, 정확한 공간 좌표 수집을 자동화하여 반려견 매칭 시스템의 공간 탐색 인프라를 성공적으로 수립함.
  • 도메인 이벤트(Domain Event) 아키텍처 도입을 통한 이미지 업로드와 보상 지급 간 결합도 해소
    • 문제: “특정 기준 이상의 반려견/반려인 사진 업로드 충족 시 코인 보상을 지급한다”라는 리워드 정책을 처리할 때, 파일 업로드 모듈 내에 회원 자산 서비스 및 코인 영속 레이어의 의존성이 직결되어 복잡도와 결합도가 심화되는 문제가 있었음.
    • 해결: 공통 EventHandler 버스를 설계하고 이미지 업로드 성공 시 MemberIssuedCoinWhenImageUploadedEvent 이벤트를 발행하도록 격리함. 이벤트 핸들러가 이를 비동기 감지하여 대표 이미지 등록 요구사항 도달 여부와 기존 지급 이력을 2차 스크리닝한 뒤 MemberAsset에 보상 코인을 지급하도록 설계함.
    • 성과: 미디어 업로드 로직과 리워드 금융 로직 간의 소스 코드 수준의 결합도(Coupling)를 완전히 제거하여 유지보수성을 극대화했고, 향후 리워드 지급 조건이 변경되거나 신규 로그 이벤트 발생 시에도 이미지 업로드 파이프라인의 변경 없이 리스너만 자유롭게 확장할 수 있는 유연성을 확보함.

[24.02 ~ 24.04] Oh-Manager, 신인 배우의 오디션 중계 플랫폼

Product

항목내용
기간2024.02 ~ 2024.04 (약 2개월)
목적소속사 없는 일반 신인/지망생 배우들에게 공정하고 안전한 오디션 기회 중계 및 매칭 지원
문제 정의300만 지망생 대비 기획사 소속생 위주의 오디션 독점 현상과 사기 계약, 불공정 관행 등 지망생 보호를 위한 안전성 검증 채널 부재
주요 기능신뢰성 검증 기반 오디션 매칭 중계, 신인 포트폴리오(프로필/재능) 관리, 사기/유해 오디션 사전 탐지 및 정보 필터링
대상 사용자오디션 기회가 부족한 무소속 배우 지망생 및 신뢰할 수 있는 신인 캐스팅을 원하는 기획사/제작사

Project

항목내용
담당 역할백엔드 API 개발 및 오디션 매칭 코어 비즈니스 도메인 설계
기술적 특징중계 라이프사이클 설계: 오디션 공고 등록부터 매칭, 조율 및 계약 성사까지의 흐름을 제어하는 상태 머신 기반 비즈니스 로직 설계
안전망 필터링: 위험 및 사기성 오디션 유입 방지를 위한 검증 규칙 기반 필터 및 스크리닝 기능 구현
실시간 중계 알림: 오디션 매칭 상태 변화 및 일정 조율 현황을 신속히 전파하기 위한 비동기 메시징/알림 구조 설계
기술 스택Python 3.x, FastAPI, SQLAlchemy, MySQL, Docker, Slack SDK
RepositoryGithub Repository

주요 기능

  • 관심 카테고리 기반 오디션 추천 조회: 유저의 프로필에 등록된 관심 카테고리를 추출하여 매칭되는 맞춤형 오디션 공고 목록을 필터링 조회하는 기능
  • 배우 지망생 프로필 및 SNS 연동 관리: 지망생의 신체 조건(키, 몸무게), 주소, 프로필 이미지와 SNS(인스타그램, 페이스북, 트위터) 연동 링크 정보를 등록 및 갱신하는 프로필 기능
  • 오디션 지원 및 지원서 제출 이력 조회: 특정 오디션 공고를 대상으로 오디션 지원서를 신규 접수하고, 유저가 제출한 전체 지원서 내역을 애그리게이트 패턴을 통해 가공 조회하는 기능
  • 이메일 인증 기반 회원가입 및 JWT 세션 관리: 이메일 중복 확인 및 인증 코드 검증 단계의 회원가입 흐름을 보장하고, bcrypt 암호화 및 JWT 토큰 기반 무상태 세션 인증 관리 수행

개발 성과

  • 커스텀 트랜잭션 라우터 구현을 통한 도메인 순수성 및 정합성 확보
    • 문제: 비즈니스 유스케이스 계층 내부에서 세션 및 트랜잭션(커밋/롤백) 관리 코드가 파편화되어 중복이 발생하고, 예외 발생 시 롤백 누락 및 도메인 비즈니스 로직에 인프라성 세션 코드가 결합되는 위험이 존재함.
    • 해결: FastAPI 라우팅 메커니즘을 확장하여 요청 단의 트랜잭션을 전역 통합 관리하는 TransactionRoute 커스텀 라우터를 직접 설계 및 구현함. 예외 발생 시의 자동 롤백 및 정상 응답 시의 자동 커밋 처리를 라우터 계층에서 가로채 처리하도록 통제함.
    • 성과: 세션 관리 누수로 인한 리소스 낭비 및 데이터베이스 상태 불안정을 차단하고, 유스케이스 및 도메인 서비스 내에 순수한 비즈니스 규칙만 작성될 수 있는 도메인 격리를 달성함.
  • 의존성 주입 컨테이너 기반 클린/DDD 아키텍처 설계
    • 문제: 회원 정보 및 세션 토큰 등 핵심 비즈니스 도메인의 변경이 외부 연동 라이브러리(bcrypt, JWT, AWS S3 등)의 결합도로 인해 시스템 변경 유연성과 테스트 고립성이 저하됨.
    • 해결: API 서버(oh-manager-api)와 백그라운드 스케줄러(oh-manager-scheduler) 구조를 분리하고, dataclasses 기반 도메인 엔티티(MemberEntity 등)를 설계하여 비즈니스 규칙을 캡슐화함. 또한 Dependency Injector DI 컨테이너patch_ioc를 설계하여 인프라 및 DB 계층을 런타임에 동적으로 주입함.
    • 성과: 프레임워크나 데이터베이스 스펙(MySQL 등)의 구체적인 구현이 변경되더라도 핵심 도메인 로직에 영향이 전혀 가지 않는 아키텍처 유연성과 독립 모의 테스트 환경을 확보함.

[23.10 ~ 24.02] FOLDER, 패션 서치 커뮤니티

Product

항목내용
기간2023.10 ~ 2024.02 (약 4개월)
목적분산된 패션 콘텐츠를 통합 탐색하고 정보 공유를 지원하는 커뮤니티 플랫폼 개발
문제 정의패션 정보가 여러 매체에 파편화되어 탐색이 번거롭고, 패션 관심사에 특화된 소통 및 정보 교환 공간이 부족함
주요 기능패션 매체 콘텐츠 수집 및 탐색 필터, 관심 콘텐츠 스크랩북, 게시글 및 토픽(투표) 기반 커뮤니티
대상 사용자여러 패션 매체의 트렌드를 모아보고 다른 사용자들과 패션 정보를 나누고 싶은 유저

Project

항목내용
담당 역할분산형 패션 콘텐츠 크롤링 및 자동화 파이프라인 구축
기술적 특징계층형 수집 아키텍처: 관심사 분리를 위한 계층형 구조 및 Adapter Pattern 기반 수집(API)-정제(Pipe) 로직 격리
우회 및 비동기 수집: cloudscraper/fake-useragent 기반 봇 방화벽 우회 및 aiohttp/aiomysql 비동기 대용량 파이프라인 최적화
정제 자동화 및 DI: Langchain/OpenAI API 연동 데이터 요약·분류와 Dependency Injector 활용 격리 테스트 수립
기술 스택Python 3.x, FastAPI, SQLAlchemy, aiomysql, aiohttp, BeautifulSoup4, lxml, APScheduler, Dependency Injector, Docker, Docker Compose, GitPython, Langchain, OpenAI, Slack SDK
RepositoryGithub Repository

주요 기능

  • 패션 트렌드 미디어 데이터 자동 수집: 보그 코리아, 패션인사이트, 아이즈매그 등 10개 패션 트렌드 매체사로부터 주기적(daily_collect) 또는 과거 전체 이력(all_collect)을 수집하는 배치 자동화 환경 구축
  • AI (OpenAI / Langchain) 기반 원문 요약: 수집된 각 매체사 원시 콘텐츠 본문을 GPT 모델(ContentCreator.summary)을 연동해 요약문으로 변환하고 분류 키워드를 동적 추출하는 가공 기능
  • 통합 패션 포스트 배포 API: 다중 플랫폼에서 수집·가공된 게시물들을 필터링 검색(키워드/매체별) 및 정렬 조건(조회수, 등록일자)에 맞게 제공하는 콘텐츠 노출용 API 엔드포인트 구현
  • 실시간 수집 상태 모니터링 알림: 배치 크롤링 완료 또는 외부 리스폰스 에러 등 예외 발생 여부를 Slack 웹훅 채널로 실시간 전파하는 자동화 알림 시스템 연동

담당 작업

  • 웹사이트 추가 비용을 낮추는 계층형 수집 아키텍처 및 어댑터 설계
    • 문제: 수집 대상인 10가지 패션 매체별로 데이터 스키마와 HTML 구조가 상이하고, 특히 복수 카테고리(kdrama, tvmovies 등) 간 마크업 불일치로 인해 신규 수집 채널을 확장할 때마다 기존 모듈의 코드 수정 범위가 넓어지는 한계가 있었음.
    • 해결: 비즈니스 로직과 수집 엔진을 차단하기 위해 명확한 계층형 아키텍처(Layered Architecture)를 채택하고, 수집(API)과 정제(Pipe) 단계를 엄격히 캡슐화하는 Adapter Pattern을 구축함. 카테고리별로 API(get_kdramas_content_list 등)와 Service 메소드를 나누어 독립적으로 처리되도록 격리 리팩토링함.
    • 성과: 신규 매체나 불일치 카테고리가 추가되어도 기존 시스템 동작에 미치는 사이드 이펙트를 차단하고, 신규 채널 연동에 소요되는 리드 타임과 개발 공수를 획기적으로 낮춤.
  • 방화벽 우회 기법(Cloudflare 등)과 비동기 처리를 통한 수집 안정화 및 최적화
    • 문제: 대량의 패션 데이터를 수집하는 과정에서 대상 매체사의 DDoS 및 봇 탐지 필터(Cloudflare 등)에 의해 요청이 차단되는 문제와, 동기식 I/O 및 데이터베이스 순차 적재로 인한 수집 지연 및 서버 대기 병목이 발생함.
    • 해결: 봇 차단막을 우회하기 위해 cloudscraper를 연동하여 Cloudflare 스크린을 해결하고, fake-useragent를 통해 요청 시마다 User-Agent를 동적으로 로테이션함. 또한 aiohttp 비동기 HTTP 요청aiomysql 기반 비동기 데이터베이스 커넥션 풀링을 구성해 병목을 제거하고 APScheduler로 배치를 자동 가동함.
    • 성과: 봇 차단 필터를 안정적으로 돌파하여 수집 중단을 예방하고, I/O 대기 효율을 극대화하여 데이터 수집 속도와 대량 적재 처리량을 비약적으로 향상시킴.
  • LLM 연동을 통한 데이터 정제 자동화 및 테스트 주도 운영 안정성 확보
    • 문제: 원시 데이터(Raw Data) 적재 시 발생 가능한 결함 데이터 유입과, 텍스트 요약 및 카테고리 분류 등의 가공 작업에 많은 후처리 공수가 예상됨. 또한, 배치 장애 발생 여부를 실시간으로 감지하기 어렵고 로컬 테스트의 결합도가 높아 검증이 곤란함.
    • 해결: 정제 파이프라인에서 Langchain / OpenAI API를 연동해 본문 요약 및 분류 과정을 자동화하고 SQLAlchemy ORM으로 DB 무결성을 유지함. 시스템 전반의 컴포넌트는 Dependency Injector DI 컨테이너로 관리하여 모의 테스트(Mocking)를 구성하고, Slack SDK 실시간 장애 감지 알림을 구축함.
    • 성과: 인공지능 기반 정제 파이프라인을 구축하여 사용자에게 제공되는 데이터 품질을 무결성 있게 보장했으며, 모니터링 알림 구축으로 배치의 장애 다운타임을 최소화하고 독립 단위 테스트 자동화를 이끌어 운영 가시성을 향상시킴.