한화시스템 Beyond SW캠프 15기 9주차

박성용·2025년 3월 25일
post-thumbnail

9주차에 대하여

드디어 Spring Framework를 본격적으로 배우기 시작했다. 처음으로 Spring Framework를 접했을 때 바로 『Clean Code』의 함수(메서드) 관련 챕터가 떠올랐다. 그 챕터에서는 함수가 두 줄을 넘지 않아야 한다고 강조하는데 이는 곧 클라이언트가 호출하는 코드 즉 추상화 레벨이 가장 높은 함수가 내부 구현에 대해 전혀 알 필요가 없도록 설계하라는 의미처럼 보였다. 그리고 Spring Framework는 그러한 철학을 극도로 구현한 기능을 제공하는 듯했다.

라이브러리와 프레임워크의 차이에 대해 늘 “제어권을 누가 갖느냐”로 구분하라고들 말한다. 하지만 프론트에서 React와 같은 라이브러리나 프레임워크를 사용할 때는 이 차이가 크게 와 닿지 않는 경우가 많았다. 예컨대 React는 컴포넌트 기반으로 UI를 구성하는 규칙이 있고 그 규칙에 맞춰 코드를 작성해야 한다. 그럼에도 React는 프레임워크가 아니라 라이브러리로 분류되며 사실상 UI 쪽 기능에 집중된 라이브러리다.

반면 Spring을 사용하면서는 “아, 이게 바로 진짜 프레임워크구나”라는 생각이 절로 들었다. 필요한 빈을 IoC 컨테이너에 등록하기만 하면 스프링이 자동으로 객체를 생성해주고 의존성을 주입해준다. 덕분에 개발자는 반복적이고 복잡한 설정 대신 비즈니스 로직에만 집중할 수 있게 된다. 이 과정을 지켜보며 스프링이 알아서 처리해주는 범위가 놀라울 정도로 넓다는 사실에 감탄했다.

더 나아가 Spring Boot를 접했을 때는 한층 더 큰 감동을 느꼈다. Spring Boot는 Spring Framework보다 훨씬 간소화되어 개발자가 고려해야 할 요소가 더 적다. 예를 들어 ‘spring-boot-starter-web’ 하나만 추가해도 필요한 의존성 대부분이 자동으로 관리되니 프론트엔드에서 여러 라이브러리를 의존성 패키지로 관리하고 충돌에 시달리던 기억과 비교하면 혁명적이라는 생각이 들었다.

Spring Web MVC 역시 인상적이다. Node.js에서 Express 프레임워크를 사용할 때는 복잡한 설정으로 핸들러를 하나하나 등록하고, 포트 설정부터 응답 처리까지 모두 직접 제어해야 하며 전달받은 데이터도 직접 전처리해야 한다. 하지만 Spring Web MVC는 거의 모든 것을 스스로 처리해주고 개발자는 단지 컨트롤러만 설정하면 된다. 그 외에 요청과 응답에 관한 설정은 전부 스프링이 알아서 관리하니 너무나 놀라울 따름이다.

느낀점 및 배운점

이번 주에 드디어 백엔드 프로젝트를 시작했는데 팀원 한 분과 처음부터 크게 부딪치는 일이 생겼다.

처음에는 많이 당황스럽고 기분이 좋지 않았지만 감정에 치우치기보다는 이성적으로 접근했다. 지금 이 문제를 해결했을 때와 그렇지 않았을 때의 결과를 비교해보니 해결하는 편이 앞으로의 프로젝트 진행에 훨씬 유리하다는 결론이 나왔기 때문이다.

그래서 우선 상대방 입장에서 어떤 문제가 있었는지 진심으로 고민해봤고 그 과정에서 내 문제점도 함께 생각해볼 수 있었다. 결국 내 잘못된 부분을 인정하고 사과를 전했다.

또 이전 회사에서의 경험을 떠올려보니 마찰이 생겼을 때 무작정 참기만 하는 것은 절대 좋지 않았다. 그래서 내가 인지한 문제점을 있는 그대로 말씀드렸고 다행히도 팀원분께서도 진지하게 들어주시고 사과해 주셨다. 덕분에 지금은 전혀 문제가 없을 뿐 아니라 팀 분위기가 더욱 좋아졌다. 오히려 이전 팀보다 소통이 원활해졌고 프로젝트에 대한 집중도도 크게 상승했다.

이번 일을 통해 다시금 ‘고통 없는 성장은 없다’는 말을 실감했다. 문제가 생겨야 비로소 성장과 더 좋은 결과를 이끌어낼 수 있다는 사실을 또 한 번 깨닫게 된 계기였다.

앞으로의 계획

  1. 기술적 역량 심화
  • Spring Framework 및 Spring Boot
    • 기존에 학습한 IoC, DI, AOP 등의 개념을 실제 프로젝트에 더욱 적극적으로 적용해보고, 추가로 Spring Security, Spring Data JPA 등 주요 모듈의 동작 원리를 심화 학습해 보고자 한다.
  1. 프로젝트 진행
  • 요구사항 정의서 초안 작성
    • 이전 프로젝트에서는 요구사항 정의서를 처음부터 너무 완벽하게 구성하려다 많은 시간이 소요된 아쉬움이 있었다.
    • 이를 통해 초기 기획과 실제 구현 간의 갭을 효과적으로 줄이고, 요구사항 변경에 유연하게 대처할 수 있을 것으로 기대한다.
  • 한/영 속성 표기표
    • 이전 프로젝트에서 유용했던 컨벤션 중 하나가 한글 명칭과 영어 명칭을 일관적으로 정의한 표였다.
    • 이번에도 우리 프로젝트에서 사용하는 주요 용어, 접두사(prefix), 접미사(suffix) 등을 한/영으로 미리 정의해두어, 데이터베이스 설계나 코드 내 변수·필드명 등에서 혼선이 생기지 않도록 할 예정이다.
profile
지속 가능한 개발과 꾸준한 성장을 목표로 하는 Web Developer 박성용입니다

0개의 댓글