관리 메뉴

기록하는 공간

14일간의 첫 풀스택 개발 : 목표 달성, 도전과 성장 본문

회고

14일간의 첫 풀스택 개발 : 목표 달성, 도전과 성장

giwoong01 2024. 5. 19. 23:18

먼저, 이전 글에서 말했듯이, 얼마 전 내가 계획했던 목표를 이루게 되었다.

그 목표는 혼자 풀스택 개발을 하는 것이었다.

 

갑자기 왜 풀스택 개발?

풀스택 개발을 진행하게 된 이유는 교내에서 진행한 IT경진대회 때문이었다.

처음부터 혼자는 아니었는데… 원래 함께 하려던 팀도 있었고, 친구가 있었는데 참가 조건 때문에 상황이 꼬이면서 혼자 남게 되어버렸다!

 

새로운 언어와 프레임워크

혼자 개발을 하게 되었으니, 어떤 프레임워크를 사용할지 고민이 되었지만 이왕 하는 거, 이번 프로젝트는 내가 하고 싶은 거 다 해보기로 했다.

 

원래는 자바, 스프링부트를 쓰다가 코틀린, 스프링부트를 사용하였다.

짧은 시간이었기에 새로운 언어, 라이브러리를 쓰는 것은 결코 쉬운 도전은 아니었지만 도전에는 이유가 있었다.

 

코틀린은 학교 강의 중 모바일 프로그래밍이라는 강의를 수강하면서 배우게 되었는데, 너무 재밌는 언어였다.

확실히 자바와 다른 점이 있었고, 장점들만이 모여있어서 사용하기도 편했다. 그래서 프로젝트를 코틀린 언어로 개발해보기로 마음을 먹었다.

 

그리고.. 리액트로 뷰를 개발하면서 시간을 가장 많이 썼다. 애초에 개발을 서버로 시작하기도 했고, 프론트는 나와 잘 맞지 않고 백엔드 공부할 때보다 재미를 느끼진 못했다.

 

그래도 해야지 뭐~ 안되는 건 없다고 생각했다.

 

서비스 기획

어떤 프로젝트를 하면 좋을까 생각하다가, 코드를 보고 토론하는 것도 좋아하고 깃 허브 pr에 올라온 코드를 보고 리뷰하는 것도 좋아해서 이걸 쉽게 공유하고 이야기할 수 있는 플랫폼이 있으면 좋겠다 생각했다.

 

그래서 CodeChaining(코드체이닝)이라는 서비스를 개발하기로 했다. 이는 학생과 학생 간의, 그리고 학생뿐만 아닌 개발자 또는 개발에 관심 있는 사람이라면 모두에게 상호작용을 강화하는데 초점을 맞추고 있다. 이는 학습 과정에서의 협력과 소통을 더욱 강화하고, 학습자 스스로가 지식을 구축하고 공유하는 데 중점을 두었다.

 

여기서 핵심은 코드체인이다. 한 명의 학생이 코드를 작성하고 공유하면, 다른 학생들이 이에 피드백을 제공하거나 개선안을 제시하면서 이야기를 펼치는 구조이다.

 

개발 시작

3월 28일부터 시작해서 2일간 기획과 디자인 작업을 하고, 이후 남은 시간동안 개발을 했다.

 

매일 쉬지도 못하고 개발만 했다.. 리액트로 개발을 처음해봐서 구글링이랑 GPT를 진짜 달고 살았다.

 

이 서비스의 주요 기능이 사실 코드를 공유하여 이야기하는 커뮤니티 느낌이라서 로그인 회원가입 구현하고, CRUD를 구현하고, 댓글 구현하는 게 끝이었다.

 

그래서 기능명세서를 보면 진짜 기능이 많이 없다.

 

서버를 구현하는데 2일 걸리고 남은 10일 동안 전부 뷰 개발하는데 시간을 쏟았다.

 

피그마로 직접 만든 화면들이다. 디자인에 소질이 없어서 색상들이 전부 어둡고 단순하다..

 

그래도 가장 신경 쓴 부분은 화면의 큰 변화 없이 하나의 페이지에서 모든 정보를 볼 수 있다는 점이다.

내부 내용은 시시각각 업데이트 되지만, 모든 활동이 단일 인터페이스 안에서 이루어진다.

이로써 사용자 경험(UX)를 향상하고자 했다.

 

개발하면서 겪은 이슈

평소 백엔드 개발을 하면 서버에서 NGINX를 사용해 설정 파일에 CORS 처리를 해주었다.

 

여기서 CORS란 Cross-Origin Resource Sharing의 약자로, 교차 출처 리소스 공유 정책이다.

교차 출처는 다른 출처를 의미한다.

 

이번 프로젝트는 프론트, 백 모두 혼자 해야 했으므로, 로컬에서도 웹 페이지를 띄우면서 테스트를 했기 때문에, 스프링부트 보안 설정 파일에도 CORS 정책을 설정했다.

그리고 서버에도 배포를 했기 때문에 NGINX 설정 파일에 CORS 정책을 설정해 주었다.

이 과정에서 문제가 발생했다. 두 가지 방법을 동시에 적용하니, 설정이 충돌하여 예상치 못한 문제가 발생한 것이다.

 

간단하게 스프링부트의 보안 설정 파일에서 CORS 관련 설정을 제거하고, NGINX만을 활용해 CORS 문제를 해결했다. 변경 후에 원활하게 동작함을 확인했다.

 

이 문제를 해결하기 위해 약 1시간의 시간을 소비했다. 하나 깨달은 점은 같은 문제를 해결하기 위해 여러 방법을 동시에 적용할 때는 서로 간의 충돌을 고려해야 한다는 것이다.

 

개발 끝 + 리팩토링

이렇게 14일간의 기획, 디자인, 개발을 마치고 최종 제출하였다. 그 후 경진대회 수상을 하고 끝이 났다.

 

이후 리팩토링을 한 번 했는데, Spring Security를 사용하지 않고, 전부 직접 구현하는 것이었다. 관련된 이야기는 다시 정리해서 블로그 작성 예정이다.

 

목표

작년 첫 프로젝트가 끝난 후 세웠던, 혼자 풀스택으로 서비스를 개발하는 목표를 6개월 만에 달성했다.

생각보다 금방 이뤄서 얼떨떨했다.

 

내가 제일 좋아하는 말이 있다.

안 되는 건 없더라

 

처음에는 안될 줄 알았는데, 그냥 부딪혀 보고 시작했다.

이번 프로젝트를 하면서 한 번 더 느낄 수 있었는데, 뭘 하든… 시작하고 노력하면 안되는 건 없었다.

 

도전과 성장

풀스택 개발을 하고 새로운 언어, 프레임워크로 개발을 하는 과정은 나에게 있어 큰 도전이었다.

 

일부 사람들에게는 쉬워 보일 수 있고, 대수롭지 않게 여길 수도 있지만 이에 도전하기로 마음먹기는 쉽지 않았고, 실제로 그것을 이루기까지는 더욱 어려웠다.

하지만 한 번 도전을 극복하고 나니, 어떤 것이든 두려움 없이 도전할 수 있는 용기가 생겼다.

이러한 도전은 지식의 폭을 넓힐 수 있는 발판이 되었고, 배우며 성장할 수 있는 기회를 더 많이 제공해 주었다.

 

CodeChaining Github: https://github.com/Code-Chaining