개인 프로젝트 완성 및 회고록

yjkim·2023년 10월 3일
1

개인프로젝트

목록 보기
2/3

프로젝트 아키텍처

기술 스택

언어 및 프레임워크

  • 백엔드 : Java and Spring
  • 프론트엔드 : HTML,CSS and Javascript

백엔드는 Java와 Spring Boot를 사용하여 개발하였고, 프론트엔드는 Html, Css, Thymeleaf(얘도 프레임워크인지는 모르겠으나 그냥 넣음)그리고 순수 JavaScript를 활용한 Vanilla.js로 개발하였다.

외부 API

  • Kakao Map API
    • 지도 생성, 장소 검색, 좌표 계산
  • Kakao Mobillity API (카카오 내비)
    • 최단 경로 경유지 순서 계산
  • Naver Maps API
    • Kakao Mobillity API를 통해 얻어진 경유지 순서를 기반으로 경로 계산
  • Google Maps API (gelocation API)
    • 사용자의 현재 위치 기반 정보 제공

CI/CD

  • Github Action
  • AWS S3
  • AWS CodeDeploy
    deloy.sh

Github로 Push -> 프로젝트 빌드 및 zip파일 제작 -> S3로 Zip 파일 전달 -> CodeDeploy로 배포 요청 -> EC2 배포

CORS - Http to Https

Gelocation API는 Http 환경에서 사용이 불가능하였기 때문에 Gelocation API를 사용하기 위해선 HTTPS 환경으로의 전환이 필요했음. HTTP 프로토콜을 HTTPS 프로토콜로 변경하기 위해서는 다음과 같은 요소들이 필요함

  • AWS Route53
  • AWS CloudFront
  • AWS Certificate Manager
  • Gabia for DNS

다음과 같은 기술들을 구축해놓으면 서버와 EC2는 HTTP로 통신하고 클라이언트와 EC2간의 통신은 HTTPS로 이루어진다. 이때 HTTPS로의 전환은 CloudFront가 알아서 해주므로 서버측에서는 따로 HTTPS에 대해서 생각하지 않아도됨.(...이지만 결국 몇몇 종속성들이 HTTPS상에서는 에러가 났기 때문에 이를 해결하기 위해서 며칠을 고생했다 ㅠㅠ 특히 스프링 시큐리티)

아 그리고 원래는 Freenom인가 뭔가 하는곳에서 사이트 얻으면 쉽게 도메인 얻을 수 있다고 했었는데 Freenom이 소송인가 뭔가 걸려서 지금 못씀. 그래서 걍 가비아에서 도메인 사는거 추천 근데 어차피 HTTPS하려면 도메인 사야 되더라구요

Database

  • Mysql
    • user table과 place table 생성, user table에는 각 회원의 정보가, place table에는 각 회원들이 계산했던 이전 경로들이 저장됨. place table은 회원들의 이전 Search history에 활용됨
  • AWS RDS

EC2 환경

  • Spring Boot
  • Spring Security
    • 웹사이트 Authentication(인증), Authorization(인가) 및 로그인 구현
  • Spring Jpa

실행 화면

내 웹사이트가 오픈되는것을 아직까지는 가림 ㅎ

정상적으로 경로가 잘 출력되는것을 볼 수 있다.

추가 예정 개선점

oauth를 통한 로그인 연동 구현, placa-Db 구현, UI/UX 개선, 오류 개선, 내부 알고리즘 성능 개선

회고

Freewill And Work Ethic.
주님께서 내게 주신 귀한 선물 두가지

근 3개월간 진행됐던 개인프로젝트가 마무리 되었다. 사실 아직 구현해야 할 것도 많고, 해결해야 할 오류들도 많지만, 취준을 위한 CS 공부도 해야하고, 코테 준비도 해야하기 때문에 그냥 이쯤에서 마무리 지으려고 한다. 일단 지금 밀린 과제들부터 해결한 후 개인프로젝트는 다시 완성하는걸로, 어차피 내년 7월까지 프리티어 기간이니까 ㅎㅎ

나 혼자서 백, 프론트, 배포, 기획까지 모두 진행했던 프로젝트이니 만큼 많이 힘들었지만 그만큼 또 많이 개발자로서 많이 성장한 시간이었던 것 같다.

특히 이번 프로젝트는 이전까지는 사용하지 않다가 취준을 위해 올해 처음으로 공부한 자바와 스프링부트로 진행했다는 점과 내 스스로 AWS를 통해 웹사이트 배포까지 완성했다는 점이 꽤나 뿌듯하고 보람차다. 사실 내가 지금 까지 참여했던 프로젝트 중에 배포까지 진행했던 프로젝트가 없는 것은 아니지만,(IDEA 프로젝트) 내가 직접 배포에 참여한 프로젝트는 이번 프로젝트가 처음이기 때문에 이 경험이 더욱 더 나에게 귀하게 다가오는것 같다.

정말 3개월동안 스스로 많은 것을 배웠다. 이번 프로젝트를 통해 Ec2, Rds, S3, cloudfront 등등 AWS의 여러 서비스들을 처음으로 사용하는 법을 알게되었고, Git, Mysql 등등의 개발 툴들과 CI/CD, CORS등 웹 사이트 배포의 여러 개념들을 찍먹해 볼 수 있는 계기가 되었다.

로컬에서 코드 한줄만 추가해도 에러가 우수수 떨어지는 EC2 떄문에 얼마나 고생한지는 모르겠지만, 지나고 나니까 한층 성장한 이 기분이 너무 뿌듯하다. 정말로.

이제 당분간 개발은 잠시 제쳐두고, 밀린 운영체제를 포함한 CS 기본기 공부와 코테에 치중하려고 한다. 벨로그 글들도 이제 꾸준히 올려야지 아 근데 나 ㄹㅇ 글 ㅈㄴ 못 쓰네 위에서부터 읽어보니까

그동안의 개발일지 메모장 목록을 올리며 글을 마무리 해야겠땅 ㅎㅅㅎ 사실 7월부터 작성했는데 그건 어디갔는지 못찾겠음

profile
We may throw the dice, but the Lord determines how they fall

0개의 댓글