스프링 첫 프로젝트 - 설계에 대한 고민

zunzero·2022년 8월 9일
0

개발 이모저모

목록 보기
3/7

10월, 11월 쯤 우리에게 한 프로젝트가 주어졌다.
우리가 공부한 스프링을 얼마만큼 써먹을 수 있을 지 시험해보기 좋은 타이밍이었다.

이 프로젝트에서 느낀 것이 참 많다.

설계에 대한 고민, 첫 갈등

우선 해당 프로젝트를 진행함에 앞서, 백과 프론트 업무를 명확하게 나누었으면 좋았겠지만 우리는 4명 모두 백과 프론트를 함께 담당하기로 하였다.

효율적인 업무 분담을 위해서는 좋은 설계가 필요하다고 생각한다.
우선 프론트 부분은 프론트 담당자에 주도 하에, 페이지 단위로 업무를 분담했다.
프론트 업무에 대해 알 턱이 없는 우리는 수긍했다.

문제는 백엔드 부분에서 발생했다.
프로젝트를 패키지를 나누고, API를 설계하는 부분에 있어서 갈등이 발생한 것이다.
프론트 프로젝트를 페이지 단위로 업무 분담했으니, 그에 맞게 필요한 API 또한 페이지 단위로 분담하고 겹치는 API는 생략하자는 의견과 백엔드는 완전히 새로이 업무 분담을 해야한다는 의견으로 나뉘었다.
의견 대립이 발생했고, 우리는 많은 자료를 찾아보고 토의해보았지만 쉽사리 결론이 나지 않았다.
그래서 우린 그래도 개발 경험 몇 주 더 많은 프론트 담당자의 말대로 하기로 하고, 혹시 하다가 잘못 된 것 같다 싶으면 수정을 하자는 쪽으로 결론이 났다.

좋은 설계였음이 혹은 좋지 못한 설계였음이 드러나는 순간

SOLID 원칙 중 단일 책임 원칙은 하나의 클래스가 하나의 책임을 갖는 것을 말한다.
과연 단일 책임 원칙을 잘 지켰는가를 판별하는 기준은, 코드 수정 시 영향을 미치는 부분이 적으면 적을 수록 SRP를 잘 지켰다고 판단된다.
또한 OCP는 확장에는 열려있으나, 수정에는 닫혀있어야 한다는 원칙이다.
이 외에도 수많은 개발자들은 코드는 수정할 때 비로소 프로젝트가 얼마나 잘 설계되었는지 알 수 있게 된다고 말을 한다.

나 또한 이번 프로젝트에서 같은 경험을 했다.
우리는 서버 개발부터 시작했고, 초기에는 별 다른 문제가 없었다.
API가 겹치진 않을까 했던 우려는 즉시 토의를 통해 해결해 나가면서 코드를 작성하고 있었다.

문제는 추가 요구사항이나 수정 사항이 생겼을 때 발생했다.
하나의 수정사항이나 요구사항에 대해 이곳 저곳 건드려야 할 코드가 너무 많았던 것이다.

또한 API가 도메인, 리소스 위주로 설계되지 않고 프론트 입장에서 행위에 맞춰 설계되다 보니 불필요한 API가 너무 많아 생산성이 떨어지고 코드가 지저분해졌다.

이후에 포스팅할 프로젝트는 이번 프로젝트의 경험을 발판 삼아 나름 프로젝트나 API 설계를 잘 했다.
이 때, 우리가 설계를 잘했다고 느낀 시점 또한 추가 요구사항이나 수정 사항이 생겼을 때이다.
그 때는 추가 요구사항이나 수정 사항에 맞춰 코드를 작성하려고 하는데, 이곳 저곳 건드려야할 곳이 많아 보였다.
하지만 막상 코드를 작성해보니 한 두곳만 툭 건드리면 쉽게 해결되어 우리의 설계가 꽤 좋았구나를 느끼게 되었다.

스프링과 리액트

스프링을 처음 배워 프로젝트에 써먹어보았다. 비록 앞서 설계에 대한 아쉬운 부분이 있었다고는 했으나, 그래도 나름 서버를 구축했다는 사실에 기분이 좋았다.
이번 프로젝트에서도 프론트 일부분 업무를 배정 받아 자바스크립트와 리액트를 사용했다.
자바스크립트는 언어가 굉장히 쉬워보일 수 있는데, 개인적으로 굉장히 어렵게 느껴진다.
공부를 적게 하고 프로젝트에 바로 투입되어서인지는 모르겠는데 굉장히 어렵게 느껴진다.
Node.js 백엔드 프레임워크로 스프링을 닮은 Nest.js가 나왔다고 하는데 개인적으로 공부해보고 싶은 프레임워크이다.
그래서 자바스크립트와 타입스크리트를 공부할 수 있는 시간을 가지고 싶다.

풀스택 개발자가 될 필요는 없지만, 풀스택 개발자를 지향한다.

어떤 개발자의 인터뷰에서 어떤 개발자가 되고 싶으냐는 질문에 위와 같은 대답을 한 사람이 있었다.
백을 하건 프론트를 하건 서로의 흐름이나 작업에 대해 어느 정도는 알고 있어야 한다는 의미인 것 같다.
이번에 프론트 업무를 맡았을 때, 담당자가 나름 설계를 미리 해두고 간단한 작업만 맡겨주어서 그랬는지 굉장히 재미있게 느껴졌다. (자바스크립트는 어려웠지만...)
그래서 프론트엔드 부분 또한 한 번 제대로 공부해보고 싶다. (하지만 HTML과 css는 너무 재미없다...ㅎ)

profile
나만 읽을 수 있는 블로그

0개의 댓글