코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍
회고

[프로젝트 회고] AlohaTrip

회고

[프로젝트 회고] AlohaTrip

2024. 6. 12. 17:23

📢  프로젝트 소개

  • 프로젝트 : 나만의 여행을 계획하는 웹서비스, AlohaTrip
  • 프로젝트 인원 : 2명
  • 프로젝트 기간 : 2024.05.13 ~ 2023.05.24
  • 기술 스택
    • Front-end : Vue.js
    • Back-end : SpringBoot, Spring Security, MyBatis
  • 시스템 구조도

  • GitHub

 

 

🧑‍💻 나의 역할

  • 프론트엔드 개발
    • 메인 페이지
    • 내 정보 페이지
    • 로그인 페이지
    • 지역별 여행지 페이지
    • 여행 계획 둘러보기 페이지
    • 나만의 여행 계획 페이지
  • 백엔드 개발
    • 카카오, 네이버 소셜 회원가입/로그인
    • 구/군/유형 관광지 정보 제공 (관광지 명, 위치, 사진)
    • 여행 계획 작성/조회/수정/삭제 기능
    • 다른 사용자의 여행 계획 복사 및 수정 기능
    • TMap API를 통한 여행 경로 별 도보, 자동차, 대중교통 이동 소요 시간 및 예상 택시 요금 제공
    • 요즘 인기있는 여행 계획 제공 (공유 수 기준 내림차순)
    • 병렬 처리로 API 호출 성능 최적화
  • DB 설계/구축

 

 

 🎉 결과

삼성 청년 SW 아카데미 1학기 관통 프로젝트로 총 2주간의 기간 동안 개발하였고 운이 좋게도 우수상을 받은 작품이다. 같이 수업 듣는 학우들의 수준이 높고 다들 열심히 하여서 수상을 기대하지 않고 있었는데 막상 받으니 2주간의 노력에 대한 보상을 받는 것 같아 뿌듯했다!

곰곰이 생각해보니, 우리 팀이 상을 받은 이유는 외부 기술을 활용하여 우리 팀만의 독창적인 기능을 몇 가지 추가했기 때문인 것 같다. 또한, 이러한 기능을 뒷받침하는 깔끔한 UI가 있었기에 상을 받을 수 있었다고 생각한다.

 

 

📖 배운 점 / 느낀 점

Spring Security + JWT + OAuth2를 활용한 소셜 로그인

 이전 프로젝트에서는 일반 회원만을 대상으로 한 회원가입 및 로그인 기능을 구현했으나, 이번 프로젝트에서는 소셜 회원을 추가하기 위해 OAuth2를 활용하여 카카오와 네이버 소셜 로그인을 구축했다. 이를 통해 소셜 로그인 프로세스가 어떻게 진행되는지에 대해 깊이 이해할 수 있었다. 또한, 각 소셜 플랫폼마다 응답 JSON 형식이 다르기 때문에 이를 추상화하여 다른 소셜 로그인을 추가할 때도 유연하게 대응할 수 있는 방법을 익히는 소중한 경험을 쌓을 수 있었다.

 

TMap API

 TMap의 보행자 경로안내 API, 자동차 경로안내 API, 대중교통 요약정보 API를 활용하여 여행 경로별 도보, 자동차, 대중교통 이동 소요 시간 및 예상 택시 요금을 조회하고 활용하는 경험을 쌓았다. 이 과정에서 새로운 API를 효과적으로 활용하는 방법을 배웠으며, 응답받은 데이터의 신뢰성을 확인하고 확실한 정보를 제공하는 능력을 향상시킬 수 있었다. 결과적으로 API 활용 능력과 데이터 검증 능력을 동시에 키울 수 있었다.

 

병렬 처리로 API 호출 성능 최적화

 경로가 많아질 경우 TMap API에 요청하는 개수가 많아지기 때문에 응답 시간이 오래 걸리는 문제가 발생했다. 이를 개선하기 위해 CompletableFuture를 사용하여 여러 작업을 병렬 처리함으로써 여행 루트 다섯 개일 때 기존 API 응답 시간: 4040 ms에서 최적화 API 응답 시간: 1161 ms으로 성능을 향상시킬 수 있었다. 이전에는 성능이 다소 떨어져도 잘 동작하면 그냥 넘어갔지만, 이제는 성능까지 고려하는 개발자가 된 것 같아 감회가 새로웠다. 

 

Spring Local Cache

캐시라는 기술을 써보고 싶어서 스프링 로컬 데이터 캐시를 도입하여 데이터베이스와의 반복적인 데이터를 캐싱해 애플리케이션 성능을 향상시켰다. 기존 회원 조회 API 응답 시간: 9ms에서 캐시를 도입하여 0ms까지 줄일 수 있었다. 더 많은 반복적으로 동일한 결과를 리턴해야하는 작업, 서버 자원을 많이 사용하는 작업(API호출, 데이터베이스 조회 쿼리, ...)에 적용하면 전체적인 성능을 끌어올릴 수 있을 것 같다.

 

MyBatis

 지금까지 진행한 프로젝트에서는 DB 액세스 기술로 JPA를 사용해 개발했지만, 이번 프로젝트에서는 SQL Mapper 중 하나인 MyBatis를 사용했다. MyBatis를 사용하면서 JPA와의 차이점을 확실히 이해할 수 있었다. 내가 느낀 MyBatis의 장점은 JPA를 쓰게되면 복잡한 쿼리가 아닌 이상 Spring Data JPA의 NameQuery로 쿼리를 쉽게 만들 수 있는데 이에 반해 MyBatis는 모든 쿼리를 일일이 작성해야하니까 SQL 실력이 향상되는 느낌이었다. 둘 다 각각의 매력이 있기에 프로젝트의 목적과 상황에 따라 적절한 기술을 선택하면 좋을 것 같다.

 

풀스택

 이번 프로젝트에서는 풀스택 개발자로서의 역할을 수행했다. 프론트엔드와 백엔드를 동시에 개발하면서, 백엔드만 개발할 때는 몰랐던 프론트엔드의 애로사항을 이해할 수 있었고 어떻게 협업해야 더 큰 시너지를 낼 수 있을지 깊이 고민해보는 경험을 쌓았다.

 개인적으로 느낀 프론트엔드의 애로사항 중 하나는 자잘한 수정이 많다는 점이다. 따라서 시간을 절약하기 위해 백엔드에서 최대한 데이터를 가공하여 응답해주는 것이 중요하다고 생각했다. 추가적으로 시너지를 낼 수 있는 협업 방식으로는 API 문서를 재빨리 갱신해주는 것과 개발을 시작하기 전에 서로가 생각하는 기능이 엇갈리지 않도록, 정확하게 서로 이해하고 있는지 의사소통하는 과정이 매우 중요하다고 생각했다. 이러한 협업 방식을 통해 더 효율적이고 효과적인 개발을 할 수 있을 것이다.

 

 

📖 아쉬운 점

일자별 경로 작성

여행 계획에서 일자별로 경로를 작성하는 기능이 있었다면 더욱 사용자 친화적인 플랫폼이 되었을 것 같아 아쉬웠다.

 

 

'회고' 카테고리의 다른 글

[프로젝트 회고] FindER  (1) 2023.09.20
[프로젝트 회고] aloharoom  (2) 2023.09.20
  • 📢  프로젝트 소개
  • 🧑‍💻 나의 역할
  •  🎉 결과
  • 📖 배운 점 / 느낀 점
  • 📖 아쉬운 점
'회고' 카테고리의 다른 글
  • [프로젝트 회고] FindER
  • [프로젝트 회고] aloharoom
코딍코딍
코딍코딍
ㅎ2

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.