서비스 내용
해양 레저 활동이 늘어나면서 해파리 쏘임 사고가 빈번해졌습니다. 특히, 해파리 위험 지역에 대한 정보 부족으로 인해 사고 예방이 어려웠습니다. 이에 해양 데이터를 활용해 위험 지역을 지도에 시각화하고, 사용자 신고를 통해 실시간 정보를 제공하는 웹사이트를 개발하게 되었습니다. 이 프로젝트는 해양 안전을 증진하고, 사람들이 더 안전하게 바다를 즐길 수 있도록 돕자는 목표로 시작되었습니다.
기능
홈화면
•
카카오 맵 API를 활용하여 지도를 나타내고 있으며 지도 위에 해파리 위험지역을 표시합니다.
•
또한 지도 내 특정 지역 클릭 시 신고하기 팝업이 나타나며 신고가 가능합니다.
회원가입 및 로그인
•
회원가입 및 로그인 기능을 포함하고 있으며 해파리 신고시 사용 할 정보입니다.
해파리 소개 화면
•
해파리에 대한 생김새와 특징 서식지역을 나타내며 이것을 통해 해파리의 종류를 쉽게 파악 할 수 있습니다.
신고 목록 화면
•
신고목록이 나타나며 이것을 통해 신고가 나타난 지역 파악이 가능합니다.
사용 기술 및 라이브러리
NestJS + TypeORM (Oracle)
•
유지보수성과 확장성
모듈화와 의존성 주입을 통해 유지보수성과 확장성을 높여주기에, 프로젝트에 적합했습니다.
•
타입스크립트 기반
TypeScript를 사용해서 타입 안정성과 코드 자동완성, 리팩토링에 유리하기에 채택하게 되었습니다.
•
풍부한 공식 모듈
TypeORM, Mongoose, GraphQL, WebSockets, Swagger 등 다양한 공식 통합 모듈을 제공하기에 채택 하였습니다.
JSP
•
동적 웹 페이지 생성
HTML 코드 내에 Java 코드를 삽입할 수 있어, 동적인 콘텐츠를 쉽게 생성할 수 있기에 해당 기술을 채택하였습니다.
•
정규 교과과목 수행평가
학생들이 웹 개발 기술을 익히고, 실제로 동적인 웹 페이지를 구현하는 경험을 쌓기 위해 해당 기술 강제
맡은 역할
프로젝트 전체 담당
•
JSP를 이용하여 클라이언트 사용자 인터페이스 구현
•
KaKaoMap API를 발급하여 JSP 프로젝트 내 연동
•
회원가입 및 로그인 Auth API 구현
•
신고 기능 및 지도 위치 저장 API 구현
•
해양 누리 데이터 API 조회 및 가공 처리 후 응답 API 구현
겪었던 어려움
1.
해양누리 API가 특정 시간에 제대로 동작하지 않고 올바르게 동작하지 않을때가 있었습니다.
2.
Mac에서의 Oracle 환경 세팅이 쉽지 않았습니다.
해결 방안
API 문제 해결
•
API가 제대로 동작하지 않을때의 경우 예외처리를 통해 동작 하도록 구현하였습니다.
Docker를 이용한 Oracle 구성
•
Mac에서의 Oracle 구성이 안된다는 자료를 보고 Docker를 통해 오라클을 구축해서 사용하였습니다.
성과
이 프로젝트를 통해 저는 외부 API 통합과 데이터 가공 처리의 중요성을 깊이 이해하게 되었습니다. 특히, 해양누리 API의 불안정성 문제를 예외처리로 해결하면서 견고한 코드 작성의 필요성을 배웠습니다. 또한, Mac에서 Oracle 환경을 Docker로 구성하며 컨테이너 기술에 대한 실질적인 경험을 쌓았습니다. 무엇보다, 사용자 중심의 서비스 설계가 얼마나 중요한지 깨닫게 되었고, 이는 이후 프로젝트에서도 핵심 원칙으로 자리 잡았습니다.