spring-boot에 관해서

spring-boot에 관해서

필자의 친구가 N게임사에 면접을 보러가서 spring-boot는 설정을 편리하게 해주는 것 외에는 없나요라는 질문을 받았다고 한다.

spring-boot는 설정을 편리하게 해주기 위한게 다라고 생각한다.
그 목적으로 나왔고, 그 목적을 달성함으로 파생되는 이익이 많다.

그 이익를 꼽자면

  • 관례를 통한 설정
    • 프로젝트를 새로 생성할 때 항상 하는 설정들…
      • component-scan, InternalViewResolver, TransactionManager, DataSource, DBCP…
    • 일일이 타이핑할 필요없다. 무슨 설정이 있는지 알고만 있으면 된다. 변경할 부분만 고치자. 손가락 아플 일이 없다.
  • 앞서 소개한 spring-boot-starter를 이용한 팀 단위의 관례 정의 : 필요하다면 얼마든지 커스터마이징할 수 있다.
  • 개발환경, 웹, 보안, 배치, JDBC, NoSql, Messaging, Application Monitoring, 빌드툴 통합, 배포, 클라우드 추상화까지 개발자가 뭘 좋아할지 몰라서 다 준비해놓았다.
  • 빠른 프로토타입 프로젝트 생성 : 필요한 기술만 빠르게 테스트
  • 의존성 버전 관리 : 사용할 기술들에 대한 버전을 spring-boot-dependencies-${version}.pom에 다 정리했다.
  • 레퍼런스 한 번 훑어보자: 써봄직한 기술은 거의 다 있다(지원한다)

그럼에도 불구하고

사실 spring-boot를 쓰면서 편하다고 느끼는 것은, spring-boot를 쓰지 않으면서 많은 커스텀 설정들을 직접 해봤었기 때문이 아니었을까 하는 생각도 든다.
SQL을 잘 다룰 줄 알아야, JPA를 더욱 효율적으로 사용할 수 있는 것처럼, spring으로 어떠한 일들을 할 수 있는지 한 번쯤 경험해봐야, boot도 잘 다룰 수 있지 않을까?
application 환경 설정이라는 부분은 개인간의 기술 격차가 생기기 쉬운 부분 중 하나라고 생각한다.
한 번, 여러 케이스들에 대해서 잘 템플릿화 해두면 큰 변경없이 오래도록 잘 써먹을 수 있기 때문인 것 같다.
실제로 필자도, 처음 개발 1년차 동안은 maven의 parent pom의 개념같은 것도 몰랐었으니 말 다했다.