Spring Boot를 공부하기 앞서서
스프링부트를 공부하기 앞서서 스프링부트에 대한 궁금증을 해소해봤습니다.
1. Spring 프레임워크란?
Spring 프레임워크 공식 홈페이지에서 Spring 프레임워크에 대한 설명을 보면 다음과 같습니다.
Spring은 특정 구현 환경과 불필요한 관련 없이 애플리케이션 수준의 비즈니스 로직에 집중할 수 있도록 엔터프라이즈 애플리케이션의 "플럼핑"에 초점을 맞춥니다
"Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments."
원래 서버를 개발할 때에는 데이터베이스와 같은 외부 서비스와의 연동 코드, API 요청을 받는 웹 핸들러 코드 등 작성해줘야 하는 코드가 많습니다.
하지만 Spring 프레임워크에서 이를 지원하기 때문에 작성해야 하는 코드가 많이 줄어들게 됩니다.
데이터베이스 연동도 추가적인 코드 작성 없이 설정 파일을 작성하는 것으로 끝낼 수 있고, API 요청 받는 웹 핸들러 코드도 훨씬 간단하게 만들 수 있습니다.
이렇게 되면 개발자들은 사용자에게 제공해야 하는 비즈니스 로직에 집중할 수 있게 되죠!
이외에도 Aspect Oriented Programming(AOP, 관심 지향 프로그래밍), IoC(Inversion of Control, 제어 역전)를 잘 적용할 수 있도록 지원해준다는데 공부하면서 차차 알아보도록 하겠습니다 ㅎㅎ
2. Spring Boot는 Spring과 뭐가 다른 거에요?
1에서 설명했던 것처럼 Spring은 개발자가 비즈니스 로직에 집중할 수 있도록 도와줍니다.
하지만! 이것도 복잡한 부분이 있어서 개발자들을 더 편하게 해주고자 Spring Boot가 나왔습니다.
Spring 프레임워크보다 더욱 사용하기 쉽다고 하더라고요!
- jar 파일만 있으면 웹서버를 실행할 수 있다네요! 스프링 프레임워크를 사용하는 걸 옆에서 본 적이 있는데 Tomcat이 필요하여 불편하다고 생각했는데 Spring Boot는 훨씬 쉬운 것 같습니다.
역시 직접 사용해봐야 알겠지만 많은 기대를 하고 있습니다.
3. Spring, Spring Boot을 사용했을 때의 단점은 없을까요?
모든 프레임워크가 그렇듯 개발하는 서비스가 프레임워크에 의존적이게 된다는 문제가 발생합니다.
만약 사용하는 프레임워크가 고질적으로 성능 문제를 겪는다면 서비스 또한 성능 문제를 겪게 될 확률이 높습니다.
그럼에도 불구하고 프레임워크를 사용하는 이유는 개발 속도와 커뮤니티의 힘이 큰 것 같습니다.
서버의 모든 부분을 바닥부터 개발하는 것은 매우 큰 작업이라서 제품 출시 일정을 못 맞추게 됩니다.
또한, 서버를 개발하고 운영할 때 겪게 되는 문제들을 직접 해결해야만 하죠.
프레임워크 커뮤니티에는 이런 문제들이 이미 식별되고, 해결책이 나온 경우가 많습니다.
그래서 문제를 겪더라도 이를 우회할 수 있는 방법들이 마련되어 있을 확률이 높습니다.
Spring 커뮤니티도 정말 크기 때문에 서비스를 개발하고 운영하는데 있어서 많은 도움을 받을 수 있을 것 같습니다.
4. Spring Boot를 어떻게 공부하실 건가요?
"스프링부트와 AWS로 혼자 구현하는 웹서비스" 책을 통해서 공부해보도록 하겠습니다.
저는 Oracle Cloud를 이용해서 구현해보려고 하는데 벌써부터 두근두근합니다!
Spring과 Spring Boot에 대해서는 코드 스테이츠의 글을 읽어보니 조금 이해가 되더라고요 ㅎㅎ
이제 실습을 준비하면서 더 공부해봐야겠습니다.