myStory - 프로젝트 후기

5tr1ker·2023년 9월 25일
1

프로젝트후기

목록 보기
1/3
post-thumbnail

프로젝트 소개

해당 프로젝트는 경쟁을 통한 학습보다 서로 공부한 내용을 공유하거나, 누군가를 가르칠 때 효율이 더 높다는 연구 결과에 따라서 함께 만나서 공부할 수 있게 도와주는 웹 어플리케이션을 개발했습니다. 모임을 개설하고 만남 날짜를 예약해 활동할 수 있으며, 게시글을 통해 배웠던 내용을 공유하거나 소통할 수 있는 웹 어플리케이션입니다.

주요 기능으로는 우선 게시판 ( CRUD ) 형식으로 댓글과 태그 , 첨부파일 등 인터넷에 자주 사용되는 기능을 모두 함축시켜 만들었고 , 또 모임 기능과 만남 예약 시스템을 구현했습니다. 사용된 프레임워크는 크게 Socket카카오 맵 API , OAuth2.0 등이 있습니다.

프로젝트 완성도

프로젝트를 진행하면서 많은 우여곡절이 있었지만 내가 목표하고자 했던 기능은 모두 완성이 되었습니다. 주요 기능은 맨 하단의 깃허브 주소의 Read.me 를 읽어보시면 주요 기능들을 쉽게 볼 수 있고 배포된 사이트 ( https://mystorynews.com/ ) 를 통해서 직접 서비스를 활용해볼 수 있습니다.

프로젝트를 하면서 얻은 것

- 백엔드와 프론트엔드의 통신 방법을 깨닫게 됨

해당 프로젝트는 개인 프로젝트로 백엔드와 프론트엔드 모두 혼자서 개발했습니다. 따라서 Rest API 를 통해 소통하는 과정을 직접 깨닫게 되었으며 동시에 Cors 문제를 어떻게 유연하게 해결할 수 있는지 알 수 있었습니다.

- 구현 능력을 크게 키울 수 있었음

다양한 기능으로 1:N 과 N:1 구조를 데이터베이스 정규화에 맞게 나눌 수 있는 능력을 키웠었고 동시에 Join 을 이용하여 원하는 데이터를 추출할 수 있게 되었습니다.
그리고 복잡한 기능을 구현할 수 있는 능력을 기를 수 있게 되었습니다.

- 리팩토링 능력을 키울 수 있었음

해당 프로젝트는 학교 수업에 진행했었던 프로젝트로 처음엔 Node.js 로 작성되었다가 Spring , 이후 Spring Boot 로 변경이 되었습니다. 이렇게 프레임워크가 변경되면서 레거시 코드를 클린 코드로 개선시키고 , 객체 지향 언어의 특징인 SOLID 규칙을 지켜 개발을 진행하다보니 각 메서드마다 어떤 역할을 하는지 쉽게 정의할 수 있었고 , 작은 코드 조각들을 맞춰 개발을 진행하다보니 소설처럼 쉽게 읽히는 코드가 되었습니다.

- DevOps 활용 능력을 키울 수 있었음

해당 프로젝트는 DockerAWS EC2 , S3 를 이용하여 배포를 했었고 쉽게 배포할 것이라는 예상과 달리 많은 어려움이 있었습니다. Https 보안 설정을 위해 Route 53 의 도메인을 통해 설정을 해주어야하는데, 도메인으로부터 오는 모든 요청은 프론트엔드와 연결되는 문제가 있었습니다. OAuth2.0Socket 는 백엔드 서버와 직접 연결하기 위해 Elastic Load Balance 를 사용하여 해결했습니다.

이처럼 예상치 못한 오류를 해결하는 과정에 Linux 에 대한 이해가 깊어질 수 있었으며, 뿐만 아니라 DevOps 를 이해할 수 있었습니다.

프로젝트를 하면서 아쉬웠던 것과 방향성

- 기획이 확실하지 않았다.

해당 프로젝트는 기획 없이 기술을 공부하면서 적용하고 싶었던 기능을 바로 반영했다 보니 레거시 코드가 많이 생겨났었고 데이터베이스 구조가 많이 변경되었습니다. 이 때문에 프로젝트 기간이 많이 늘어나는 결과를 초래했습니다.

이를 통해 처음에 구현하고자 하는 방향을 확실하게 정의하고, 구현이 완료된 이후에 기능을 확장하는 방향이 중요하다는 것을 깨닫게 되었습니다.

- 보안 설정이 아쉬웠다.

프론트에서 도커 컨테이너의 API 주소와 URI 정보가 모두 노출되었습니다. AWS EC2 에서 인바운드 보안 설정을 통해 어느정도 보안을 했지만 , 그럼에도 아쉬움이 많았습니다.
프론트엔드에 대한 지식이 많지 않은것도 원인이지만, 민감한 정보를 숨기는 방법과 , 웹 브라우저에서 노출되는 정보들을 ( LocalStorage , Network API 응답 데이터 ) 숨기는 방법을 꾸준히 공부해야할 것 같습니다.

- 기능 확장할 때 예상치 못한 오류가 많았다.

기능 확장을 하면서 코드들이 수정됐기에 버그가 발생할 수 있는 코드를 모두 직접 확인했어야 했습니다. 통합 테스트를 위해 PostMan 소프트웨어를 이용하여 모두 테스트를 했지만 시간도 많이 걸리고 모든 버그를 잡을 수 없었습니다. 실제로 배포를 하고 나서 예상치 못한 버그가 발생하여 재반영을 해야 하는 일이 있었습니다.

이를 통해 지속적인 기능 확장을 위해서는 단위 테스트인 TDD 의 중요성을 깨닫게 되었습니다.

프로젝트를 마치면서..

길고도 긴 나의 대표 프로젝트가 끝났습니다. 구현했던 기능에서 계속해서 확장해 나갔으며 이를 통해 많은 것을 배울 수 있었던 프로젝트였습니다. 많은 벽이 있었지만 포기하지 않고 계속해서 나아간 결과 이런 멋진 프로젝트와 개발 실력을 갖게 되었습니다.
뿐만 아니라 포기하지 않으니 실력과 자신감을 얻을 수 있었고, 추후에 벽을 만나도 주저하지 않고 나아가는 방법을 배울 수 있었던 값진 경험을 했습니다.

깃허브 주소

https://github.com/5tr1ker/myStory

배포 사이트

https://mystorynews.com/

profile
https://github.com/5tr1ker

0개의 댓글