짜잔! 멋사에서 Django로만 백엔드 개발을 해봤는데 방학동안 스프링도 배워보려고 한다... (취업하고 싶어요)
fastcampus.app
의 스프링러너의 스프링 아카데미 강의를 듣고 배운 것을 spring
시리즈로 정리해보려고한다.
본격적으로 스프링 개발을 해보기 전, 스프링을 왜 써야하는지에 대해 알아보자!
스프링을 왜 써야하죠?
스프링은 자바 엔터프라이즈 환경에 필요한 모든 것을 제공하고, 자바 엔터프라이즈 애플리케이션을 손쉽게 만들 수 있다.
- 엔터프라이즈 애플리케이션의 핵심적인 기능, 비즈니스 로직을 빠르고 효과적으로 구현할 수 있게 돕는다.
- 엔터프라이즈 애플리케이션을 구현하면서 실수하기 쉬운 저수준의 기술에 많은 신경을 쓰지않아도 된다.
엔터프라이즈 애플리케이션이란?
서버에서 동작하며 기업과 조직의 업무를 처리해주는 시스템을 말한다.
- 많은 사용자의 요청을 동시에 처리해야하므로 서버의 자원을 효율적으로 분배해서 사용해야한다.
- 대규모의 복잡한 데이터를 관리하고, 이러한 데이터를 이용해 비즈니스 프로세스 지원 및 자동화한다.
- 기업의 핵심 정보를 관리하기에 보안과 안정성, 확장성 면에서도 뛰어나야한다.
- 다수의 사용자가 접근하며, 기업내 분산된 다른 엔터프라이즈 애플리케이션과 통합된다.
- 데이터 입/출력을 위한 다양한 사용자 인터페이스가 제공된다.
엔터프라이즈 자바
자바는 엔터프라이즈 환경이 필요로 하는 보안성, 안정성, 확장성등을 고려해 자바 플랫폼이자 프레임워크인 자바 엔터프라이즈 에디션, 자바 EE를 제공하고 있다.
- 대규모, 네트워크, 다계층 애플리케이션을 더 쉽고 안전하게 구축할 수 있다.
자바 EE 서버
서블릿이나 EJB등의 자바 EE 명세를 구현한 서버를 의미... (그게 뭐죠?)
- 엔터프라이즈 자바로 만든 애플리케이션을 배포하려면 자바 EE 서버가 필요하다.
-
두 가지 종류가 존재
- 자바 EE의 모든 표준 기술을 지원하고 다양한 모듈로 배포가 가능한 완전한 웹 애플리케이션 서버 (WAS)
- 웹 모듈만 배포 가능한 경량급 웹 애플리케이션 서버 (서블릭 컨테이너) - 톰캣이나 언더토우, 제티같은 오픈 소스 구현체가 널리 사용됨
스프링 프레임워크
위에서 설명한 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 ^^
- 자바 플랫폼으로 엔터프라이즈 애플리케이션을 개발하는데 필요한 하부 구조를 포괄적으로 제공한다.
- 스프링이 하부 구조를 처리하므로 개발자는 애플리케이션 개발에 집중할 수 있다.
- 핵심은 엔터프라이즈 서비스 기능을 POJO에 제공하는 것이다.
엔터프라이즈 서비스 : 트랜잭션, 보안, 메일, 메시징, 캐시와 같은 엔터프라이즈 애플리케이션에서 요구되는 기술을 의미
자바 엔터프라이즈 개발이 어려운 이유?
폭발적으로 늘어나는 비즈니스와 기술 복잡성 때문!
- 스프링은 이를 해결하기위해
POJO
를 중심으로 제어의 역전과 의존 관계 주입, 관점 지향 프로그래밍, 이식 가능한 서비스 추상화와 같은 핵심 기술을 프레임워크와 컨테이너를 통해 제공한다!
스프링 프레임워크의 전략
비즈니스 로직을 담은 애플리케이션 핵심 코드와 엔터프라이즈 기술을 처리하는 코드를 분리시키자!
복잡함을 분리해서 각각의 문제를 효과적으로 해결
POJO
와 함께 스프링 3대 핵심 기술을 사용한다...- 이를 위해선 좋은 객체 지향 설계가 바탕이 되어야 함!
근데 포조가 뭔데요...?
POJO (Plain Old Java Object)
객체 지향적 원리에 충실하고, 특정 규약과 환경에 종속되지않게 재활용될 수 있는 방식으로 설계된 객체를 의미한다. (네...?)
- 객체에 애플리케이션 핵심 로직과 기능을 담아 설계, 개발하는 방법을 POJO 프로그래밍이라 부른다.