토이 프로젝트 기획과 고민
토이 프로젝트 기획
현재 배운 것들을 복습한 뒤 스프링을 이용하여 기본적인 CRUD를 제공하는 ai 그림을 파는 쇼핑몰 웹 서비스를 구현해볼 계획이다.
먼저 프로젝트 목표는 다음과 같다.
- 서비스에 외부 API 연동을 통해 API를 개념만이 아닌 실제 어떻게 사용되는지 알아보기
- DB를 서비스에 연동하면서 RDB와 NOSQL의 차이를 알아보고, 서비스에 맞는 것을 취사선택 한 후 RDB라면 스키마 정립, NOSQL이라면 어떻게 사용되는지 알아보기
- 강의에서 지금까지 배운 내용들을(스프링의 MVC패턴, 템플릿 엔진과 여러 기능들) 서비스에 녹여내고 부족한 부분을 배우며 진행
- 배운 과정이 이미 RESTful한 API를 만드는 방법 같지만, 그래도 REST에 대해 찾아보면서 가능한 RESTful하게 구현
- 다중 요청이 들어올수 있는 웹 서비스이니 스프링에서의 멀티쓰레딩과 동시성 제어가 어떻게 이루어지는지 배우고 적용
- AWS EC2, TraivsCI 등을 활용한 CI/CD 경험, 처음엔 CI/CD 없이 EC2 서버에 JAR를 배포해보고 이후 Travis등을 활용하여 차이점 경험
- 작게라도 많은 것을 경험하고 뭔지 대충은 아는 것을 목표로
- 추후 스프링부트,JPA를 제대로 배우고 리팩토링하는 것 까지가 목표
하나씩 생각나는 것들을 적다보니 뭔가 많아진 것 같다… 위에 적은대로 작게라도 많은 것들을 경험하려고 하다보니 많아진 것 같다.
사실 프로젝트 시작 전에는 간단하게 구현만 하려 했는데, 다른 사람들은 토이 프로젝트를 어떻게 하는지 찾아보고 이런건 나도 해보면 좋을 것 같다! 싶은 것들을 넣다보니 이렇게 많아졌다. 솔직히 다수의 사람이 협업하고 하는게 아니기 때문에 CI/CD 파이프라인같은건 굳이 필요없긴 하다. 하지만 역시 해보는게 도움이 될 것 같다.
현재 일단 기본적인 서비스 기획, 객체 기획, 페이지 기획 등은 마쳤고, 나머지는 일단 코드를 치면서 천천히 고민과 수정을 해야할 것 같은데 문제가 생겼다.
어디서부터 손을 댈지 모르겠다!
CI/CD의 경우 프로젝트를 지속적으로 빌드, 테스트하고 서버에 디플로이 하는 것이 목표인 파이프라인이다. 그러므로 CI/CD를 사용해보고 싶다면 먼저 환경을 구축한 다음 프로젝트를 시작해야 하는 것이 아닐까?
아니면 백엔드 로직은 일단 프론트의 위치 등을 보고 결정을 하는 것이 좋다는데 bootstrap 등으로 프론트를 먼저 구축해야 하는 것이 아닐까?
아니면 먼저 기본적인 로직들을? 외부 api 연동부터?
사실 뭐라도 일단 손을 대는 것이 건설적인 방향같지만 너무 일을 크게 벌린 것 같아 겁이 나는지도 모르겠다.
일단 내일 기본적인 MVC 구조부터 만들어두고, AWS EC2와 CI/CD 툴로 환경을 구축하는 것부터 시작해봐야겠다.
그런데 CI/CD 툴도 많기 때문에 뭘 써야 할지도 고민된다…깃허브 액션 정도를 염두에 두고있긴 하다. 일단 시작하자.
좀 더 생각해보니 CI/CD는 기본적으로 빌드와 테스트를 위한 툴이다. 따라서 테스트가 필요할 정도까지는 먼저 서비스를 구축해야 한다.
다른건 신경쓰지 말고 먼저 테스트가 필요한 수준까지는 서비스를 구현하는 것을 목표로 해봐야겠다.
CI/CD 툴은 깃허브에서 별다른 연동이 필요없고, public repository라면 비용이 발생하지 않는 Githun Action을 사용할 예정이다.