코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (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 정상우.
코딍코딍

코딩기록

회고

[프로젝트 회고] FindER

2023. 9. 20. 17:57

📢  프로젝트 소개

  • 프로젝트 : 실시간 응급실 정보 제공 서비스
  • 프로젝트 인원 : 4명 (프론트엔드 2명, 백엔드 2명)
  • 프로젝트 기간 : 2023.08.09 ~ 2023.09.08
  • 기술 스택
    • Front-end : Flutter
    • Back-end : SpringBoot, Spring Data JPA, Spring Security, Oracle
    • Infra : AWS EC2, Docker
  • 협업 : Slack, Figma, Discord
  • 시스템 구조도

  • GitHub

 

 

🧑‍💻 나의 역할

  • 백엔드 개발
    • 회원가입/로그인
    • 응급실 정보 제공 (위치, 전화번호 外 CT & MRI 촬영 가능 여부 등)
    • 응급실 잔여 병상 수 실시간 제공 (1분 간격 갱신)
    • Kakao Map API를 통한 사용자 현재 위치 기준 가까운 응급실 목록 및 최적 경로 제공
    • Kakao 자동차 길찾기 API를 통한 응급실 예상 도착 시간 및 이동 거리 제공
    • 최근 2시간 동안의 병상 이용 가능 시간 비율 그래프 제공
    • 최근 2시간 동안의 병상 수 변동 추이 그래프 제공 (15분 간격)
    • 사용자 문진표 작성 기능 제공
    • 사용자 간 문진표 연동을 통한 문진표 상호 동기화 기능 제공
  • DB 설계/구축
  • Infra 구축

 

 

 🎉 결과

공개SW 개발자 대회에 출품했으나 아쉽게도 1차 평가에서 떨어졌다. 경쟁률이 높기도 하고 이전 연도 수상작들의 퀄리티가 매우 높아 떨어질 것이라고 예상하고는 있었는데 막상 떨어지니 아쉬웠다.

 

 

📖 배운 점 / 느낀 점

공공 데이터 포털 Open API

 이번 프로젝트에서는 국립중앙의료원의 공공 데이터 포털 Open API 중 하나인 '전국 응급의료기관 정보 조회 서비스'를 활용하여 프로젝트의 기반 데이터를 구축하는 경험을 하였다.

 공공 데이터를 처음으로 사용하며 데이터 수집과 활용에 대한 알찬 경험을 쌓을 수 있었다. 모든 데이터가 예상대로 잘 들어올 것으로 기대했지만, 현실은 그렇지 않았다. 빈 데이터나 API 오류와 같은 문제에 직면하며, 이러한 문제들을 예외 처리하고 해결하는 과정에서 더 많은 것을 배울 수 있던 것 같다. 이런 경험을 통해 공공 데이터를 활용하면서 데이터의 신뢰성과 안정성을 평가하는 중요성을 깨닫게 되었다. 이러한 경험은 미래 프로젝트에서 데이터를 다룰 때 더욱 신중하고 효과적으로 처리할 수 있도록 도움이 될 것이다.

 

Kakao Mobility API

 Kakao의 자동차 길찾기 API를 활용하여 현재 위치에서 목적지까지의 거리와 예상 도착 시간을 조회하고 활용하는 경험을 하였다. 이 API는 다양한 정보를 반환해주지만, 그 중에서도 필요한 거리와 예상 도착 시간 정보를 추출하는 작업이 매우 복잡하였다. 이 경험을 통해 원하는 데이터를 정확하게 추출하는 방법을 명확히 이해할 수 있었다.

 

Spring Security + JWT

 이전 프로젝트에서는 세션 기반으로 Spring Security를 활용했었기 때문에, 이번 프로젝트에서는 JWT (JSON Web Token) 기반으로 Spring Security를 도입해 보았다. 이 과정에서 세션 기반과는 다른 접근 방식과 복잡성을 경험했으며, 초기에는 이해하기 어려운 부분도 있었다. 2~3일 동안 집중적으로 구현 작업을 진행하였고, 구현을 마친 후에는 JWT를 사용하는 이유, 그리고 이것이 제공하는 장점과 동시에 해결해야 하는 문제점에 대해 확실히 이해할 수 있었다.

 

Docker

 이번 프로젝트에서 데이터베이스로 Oracle을 선택했다. Oracle 데이터베이스는 기본적으로 윈도우와 Linux 환경에서 실행되지만, Mac 운영 체제에서 직접 설치하거나 실행하는 것은 공식적으로 지원되지 않기에 일반적인 방법 중 하나인 Docker를 활용하였다.

 이전에는 Amazon RDS를 통해 데이터베이스를 구축한 경험이 있어서, Docker를 사용하는 것이 어떻게 다를지 궁금했는데 Docker 컨테이너를 띄워 환경에 구애받지 않는 서비스를 만들 수 있는 점이 매력적이었다.

 

문제 해결

 국립중앙의료원의 공공 데이터 포털 Open API 중 하나인 '전국 응급의료기관 정보 조회 서비스'를 활용하여 프로젝트의 기반 데이터를 구축할 때 모든 데이터가 예상대로 잘 들어올 것으로 기대했지만, 현실은 그렇지 않았다. 비어 있는 데이터나 API 오류와 같은 문제에 직면했다. 이러한 문제는 실시간 응급실 정보를 제공하는 서비스에서 큰 문제가 되었다.

 문제를 해결하기 위해 우선적으로 try/catch문을 사용하여 예외가 발생했을 때 처리하는 메소드를 호출하도록 하였다. 처음에는 메소드 내에서 다시 API를 요청하도록 했지만, 예외가 2번 연속으로 발생할 경우 1분 이상의 지연이 발생할 수 있어서 실시간 서비스에 문제가 생길 가능성이 존재했다. 이에 대한 대안으로 1분 전에 저장된 병상 수를 재활용하는 방법을 채택하여 문제를 해결했다. 이러한 경험은 미래 프로젝트에서 데이터를 다룰 때 더욱 신중하고 효과적으로 처리할 수 있도록 도움이 될 것이다.

 

📖 아쉬운 점

필터링

원하는 응급실을 조건에 맞춰 필터링하는 기능을 제공하고 싶었지만, 아쉽게도 이를 구현하지 못했다.

 

소셜 로그인 

OAuth2를 이용한 소셜 로그인 기능을 도입하고자 했지만, 구현 과정에서 어려움을 겪어 결국 프로젝트에 포함하지 못했다. 이 부분을 개별적으로 학습하여 토이 프로젝트를 통해 다시 구현해 볼 예정이다.

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

[프로젝트 회고] AlohaTrip  (2) 2024.06.12
[프로젝트 회고] aloharoom  (2) 2023.09.20
    '회고' 카테고리의 다른 글
    • [프로젝트 회고] AlohaTrip
    • [프로젝트 회고] aloharoom
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바