Flashour (Update)
사진촬영 예약 플랫폼
카테고리 기반으로 포토그래퍼/비디오그래퍼의 포토폴리오를 확인하고 예약하는 O2O 서비스를 제공하는 플랫폼입니다.
개발 기간
- 2023.06.01 ~ 2024.05.31 (1년 2개월)
규모(총 9명)
- 디자이너 - 2
- 프론트엔드 - 3
- 백엔드 - 4
담당 업무
- 채팅/알림 도메인 개발
- WebSocket 기반 실시간 채팅/알림 기능 개발
- 채팅방에서 촬영 예약 프로세스 구현
자세한 내용
- 목표
플랫폼을 통해 포토그래퍼의 활동을 통해 유입된 사용자가 포토그래퍼의 상품을 주문하여 원활한 거래를 진행할 수 있도록 함 - 수행
사용자가 포토그래퍼에게 1대1 문의 진행과 거래 진행을 채팅 상에서 진행할 수 있도록 연동
이를 위해 예약 담당 도메인 담당 개발자와 작업을 진행하였고 필요한 API를 공유 받아 작업을 진행
이를 통해 채팅 상에서의 예약, 예약 수정, 예약 수락, 작업중, 작업물 다운로드, 거래 완료에 대한 각 프로세스를 채팅 상에서 진행할 수 있도록 구성 - 의미
작업 진행 상황을 공유하며 협업 능력을 향상시킴.
API 개선 및 추가 요청 과정을 통해 상대방의 이해를 돕는 소통 능력을 기름.
- 포트폴리오 도메인 개발
- 포트폴리오 CRUD REST API 개발
- 네이버/다음 주소 API 연동으로 위치기반 검색 기능 개발
자세한 내용
- 목표
고객이 자신의 위치에서 가까운 포토그래퍼를 찾을 수 있도록 하며 포토그래퍼의 활동 지역을 파악할 수 있을것 - 수행
1. 네이버, 카카오 지도 API 를 통해 우리의 서비스에 위치 기반의 데이터를 어떤 식으로 식별/조회할 수 있을지, 검색하게 할지에 대해 조사
2. 지도 API 에서 지원하는 위도와 경도데이터를 기반으로 마크를 표시해주는 기능을 식별
3. 포트폴리오, 비즈니스 프로필에 위도/경도 데이터를 추가
4. 위치기반의 조회 및 포토그래퍼 활동을 시각화 - 의미
위치 데이터 처리 및 조회 경험
- 포트폴리오 컨텐츠 조회 속도 개선
- 포트폴리오 이미지 조회 속도 성능 개선
- Spring Cache와 멀티스레드를 적용하여 메인화면 조회 속도 개선
- Mean Test Time (평균 테스트 시간) - 30% 개선
- 개선 전 : 1,225.51 ms
- 개선 후 : 804.02 ms
- 스케줄링 / 캐시 환경 구축
- 사용자 비즈니스 프로필
- 추천지수
- 사용자 비즈니스 프로필
- 포트폴리오 조회 성능 개선
- 포트폴리오 추천지수
- 메인화면 추천 포트폴리오
- 임시파일 삭제
자세한 내용
- 목표
메인화면 콘텐츠를 조회하는 API를 구성
- 인기 있는 촬영
- 후기가 좋은 포토그래퍼
- 카테고리별 포트폴리오 순위
각 항목에 대한 데이터를 응답하는 API 구성 - 수행
Spring Boot Scheduler를 사용하여 사용자가 상대적으로 적은 시간에
포트폴리오 추천지수, 포토그래퍼 리뷰점수, 포토그래퍼의 추천 포트폴리오, 포토그래퍼의 최소/최대 상품 금액 등을 계산하도록 구성 + 메인 콘텐츠 캐싱(Ehcache)
→ 메인화면에 대한 로딩을 최적화하여 사용자경험을 향상함
ShedLock을 통해 여러 서버에서 스케쥴링이 중복하여 실행되지 않도록 구성 - 의미
Spring Boot Scheduler, Ehcache를 통한 데이터 조회 최적화 경험
- 서버 환경 구축
- Proxmox 하이퍼바이저 도구를 사용하여 서버 인프라 환경 구축
자세한 내용
- 목표
서비스 환경에서 파일관련처리를 S3를 통해 하는것으로 결정
개발서버와 개발환경을 최대한 서비스환경과 비슷하게 구성 하고자 함
But. 개발환경과 개발서버의 특성상 잦은 파일처리로 인한 비용이 예상됨 - 수행
해결방법을 모색해본 결과 S3와 100% 호환되는 minio라는 서비스를 찾을 수 있었고 해당 서비스를 팀원들에게 공유하여 우리 서비스의 개발환경에 적용하여 비용/개발 편의성을 높임
+ Nginx Proxy Manager 도입을 통한 SSL 인증서 자동 갱신 도입 - 의미
오픈소스 활용 및 비용 최적화, 실제서비스와 테스트 환경의 중요성
- Jenkins / Nginx를 사용하여 Blue/Green 무중단 배포 환경 구축
자세한 내용
- 목표
사용자에게 있어서 서비스 업데이트 과정에서 끊김 없는 서비스를 제공하여 사용 편의성을 높이고자 함 - 수행
젠킨스/Docker를 사용하여 이미지를 빌드하고 새로 업데이트된 컨테이너가 정상적으로 기동 되는 것을 확인
Nginx의 스크립트를 수정하여 기존 트래픽을 새로 빌드한 컨테이너로 연결해주는 Blue/Green 기반의 무중단 배포환경을 구성 - 의미
기존 도커 이미지를 통해 서비스를 사용하는 것을 넘어 DockerFile을 작성하여 서비스 이미지를 직접 빌드 배포과정에 활용하는 과정 이해
Nginx를 활용한 Blue/Green 무중단 배포 전략 이해
- 기타
- 포토그래퍼 비즈니스 프로필 Form 개발
- 리덕스 툴킷을 통한 상태 관리 환경 구축
- Log4j2를 이용한 Docker 컨테이너 기반 서버 로그 환경 구축
Backend
- Java, JavaScript
- Spring Boot, Koa.js, Socket.IO
- Spring Data JPA, Querydsl
- PostgreSQL, MongoDB
- Linux
- S3, Minio
Frontend
- React
- Next.js
- Redux toolkit