Programming-[Backend]/Spring

[스프링 기초] 1. 스프링의 탄생, 기본 개념

컴퓨터 탐험가 찰리 2021. 5. 6. 22:06
728x90
반응형

1. EJB(Enterprise Java Beans)

자바는 2000년대 초에는 EJB라는 기술을 사용했다. 자바의 표준 기술이였고, 컨테이너 기술, 트랜잭션 설정 기술, 분산 처리 기술, ORM 등이 잘 지원되었다. 그래서 금융권 등에서 많이 활용되었다.

그러나 수 천만원 가량의 비싼 비용이 들었고, 어렵고 복잡하고 느려서 사용하기가 매우 힘든 기술이였다. 그래서 순수 자바를 의미하는 POJO(Plain Old Java Object)를 쓰자는 논의가 오갔지만 기술수준이 낮아서 제대로된 기능을 구현하기가 어려웠다.


그래서 2002년 Rod Johnson이란 분의 Spring(Rod Johnson 이후 Juergen Hoeller, Yann Caroff와 함께 Spring 프로젝트 완성), 2001년 Gavin King이란 분의 Hibernate 기술이 등장하였는데, Hibernate는 개발자들에게 인기가 좋아서 자바 진영에서 Gavin King을 데려와서 Hibernate를 거의 유사하게 만들고 자바에 포함시키게 되었다. 이를 바탕으로 JPA 라는 표준 기술을 정의하고 그 구현체로 Hibernate, EclipseLink 등을 두는 구조로 만들었는데, 이중 70% 이상이 Hibernate를 사용하게 되었다.

이런 Spring-Hibernate 조합은 2021년 아직까지도 많은 사람들이 이용하고 있고, 오래된만큼 지원하는 기술도 많다. 어떤 점들이 대단하길래 20년이 넘은 지금도 많은 개발자들이 사용하고 있는 걸까?


2. Spring은 무엇인가


스프링에서 제공하는 기술(프로젝트) 목록은 spring.io 라는 공식 사이트에서 확인할 수 있다. 기술이 많지만, 결국 핵심 기술은 스프링 프레임워크 이고, Java 언어 기반의 백엔드 프로그래밍을 지원해주는 프레임워크라고 이해하면 된다.

그런데, 스프링 프레임워크는 왜 인기가 많은 걸까? 백엔드용 프레임워크는 많을텐데...


정말 핵심 컨셉은 뭘까? 왜 사람들은 스프링을 이렇게 많이 쓸까?

스프링은 객체 지향 언어인 자바의 특징을 잘 살려내는 프레임워크이다.

객체 지향 프로그래밍은 뭘까? 객체들이 유기적으로 기능하는 프로그램이라고 관념적으로 말할 수도 있겠다. 흔히들 예시로 많이 설명하듯이 자동차 객체가 있고, 그 객체를 바탕으로 색깔, 모양 등이 다른 여러 가지 자동차를 생산하듯이 프로그램을 만든다고 간단히 이야기할 수도 있다.

그러나 객체 지향 프로그래밍을 정말 이해하고, 프로그램에 녹여낼 정도가 될려면 좋은 객체 지향 프로그래밍의 특징들을 이해해야 한다. 그래야 실무에서 비즈니스 로직이 명확하고, 유지보수가 쉬운 프로그램을 만들어낼 수 있다.


참조

1. 인프런_스프링 핵심 원리 기본편_김영한 님 강의
www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

728x90
반응형