Kim-Baek 개발자 이야기

[스프링 핵심원리] 1. 자바 진영의 추운 겨울과 스프링의 탄생 본문

개발/Spring

[스프링 핵심원리] 1. 자바 진영의 추운 겨울과 스프링의 탄생

김백개발자 2021. 9. 19. 12:36
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅

 

지금의 스프링이 나오기 전에 자바 진영에서 가장 많이 사용하고, 표준이라고 정해져 사용되었던 기술은 바로 EJB이다.

EJB가 어떤 줄임말이냐 하냐면 바로, Enterprise JavaBeans 이다. 이름만 들어도 알 수 있겠지만, 기업용의 애플리케이션을 만들기 위해서 사용되는 기술이다.

EJB는 말 그래로 종합선물세트와 같은 기술이였다. Spring 과 같은 기능, 분산 처리, 트랙잭션, ORM 인 Entity Bean 까지 정말 다양한 기능을 제공하는 시스템이였다.

말로만 들어서는 정말 좋을 것 같은데, 문제가 뭐였을까? 먼저 가격적인 부분이다. 지금이야 오픈소스가 활발하고 다들 사용하는 거에 익숙해져 있지만, 2000년 초반만 해도 오픈소스는 환영받지 못하는 분위기 였다고 한다. 그래서 EJB도 돈을 주고 사야지 하나의 EJB Container 를 사용할 수 있었다.

그런데, 한 대를 사용하려고 구매하려면 최소한 수 천만원이 들었다고 한다. 아무리 기업용으로 제공되는 시스템이라고 할 지라도 수천만원은 너무 비싸다고 생각이 든다. 스타트업이나 작은 업체들에서 과연 이 비용을 감당할 수 있었을까?

그리고 더 큰 문제가 하나 있다. 바로 사용하기가 어려웠다는 것이다. 러닝커브가 상당히 높고, 한번 컨테이너를 실행하는 데도 엄청나게 오랜 시간일 걸리기도 하였다. 그리고 ORM 기술인 Entity Bean 은 낮은 기술력을 갖고 있었다. 

우리 개발자들은 기본적으로 귀찮은게 싫고, 편하고 쉽게 개발하고 싶어하는 사람들이다. 그러다 보니 POJO와 같은 옛날 자바 기술로 다시 돌아가자는 말이 계속 나왔던 것이다.

그러다가 2002년에 로드 존슨이 쓴 이 책이 등장한다. EJB를 까면서, 내가 짜도 너희보단 잘짜겠다라고 하면서 직접만든 예제 코드를 다 공개해버린다. 이게 스프링의 첫 시작이라고 볼 수 있다.

그리고 개빈 킹은 EJB 의 ORM 기술인 Entity Bean 보다 내가 더 잘짜겠다고, 퇴근하고 코딩하면서 Hibernate를 공개해버린다. 결국 이 두 사람에 의해서 EJB가 대체될 수 있는 기술들이 모두 나와버린 상황이다.

자바 진형에서는 Hibernate를 보고, 모두가 다 아는 JPA ( Java Persistence Api )를 만든다. 사실상 ctrl + c, ctrl + v 한 수준으로 만들었고, 실제 구현체 또한 80% 이상이 Hibernate를 쓰는 중이다.

로드 존슨이 책을 공개하고, 유겐 휠러, 얀 카로프 두 개발자가 이거 오픈소스로 제대로 만들어 보자고 제한하고 결국 나온게 우리가 지금 오픈소스로 편하게 쓰고 있는 스프링인 것 이다.

스프링이라는 이름은 EJB 라는 겨울 ( 힘들었나 봄.. ) 을 넘어서 봄이 드디어 왔다는 뜻이라고 한다.

그렇게 개발된 스프링은 이런 역사를 지니고 있다. 예전에는 XML 쓰는게 대세였어서, 설정 파일을 XML로 모두 관리했다고 한다. 그런데 솔직히 어렵기 때문에 자바 코드로 설정하는 방식도 나오고, 나중에는 더 간소화하는 스프링 부트까지 나온 시점이다. 

이번 강의를 들으면서, 퇴근하고 저런 걸 만들어버리는 로드 존슨과 개빈 킹에 대한 존경심이 생겼다. 앞으로 또 어떤 개발자가 스프링? 이거보다 내가 더 잘짜겠다 하고 새로운 것을 제시할 수 도 있지 않을까라는 생각도 드는 강의였다.

반응형
Comments