더북(TheBook)

1.2 스프링은 무엇이고 마이크로서비스와 어떤 관련이 있을까?



스프링은 자바 기반 애플리케이션을 구축하는 사실상 표준 개발 프레임워크가 되었다. 스프링은 의존성 주입(dependency injection)이라는 핵심 개념에 기반을 둔다. 일반적인 자바 애플리케이션은 각 클래스가 애플리케이션의 다른 클래스와 명시적으로 링크된 클래스로 분해된다. 링크는 코드에서 클래스 생성자를 직접 호출하는 것이다. 일단 코드가 컴파일되면 이러한 링크 지점은 변경될 수 없다.

이러한 외부 링크는 깨지기 쉽고, 변경되면 다른 코드에 후속적인 영향을 줄 수 있어 대규모 프로젝트에서 문제가 된다. 하지만 스프링처럼 의존성 주입 프레임워크를 사용하면 애플리케이션 안에서 관련 있는 객체가 서로 상대에 관한 정보를 하드 코딩하지 않고, 관례와 애너테이션으로 객체 간 관계를 외부화할 수 있으므로 대규모 자바 프로젝트를 더 쉽게 관리할 수 있다. 스프링은 애플리케이션의 다양한 자바 클래스 사이의 매개체로 자리 잡으며 클래스 의존성을 관리한다. 본질적으로 스프링은 끼워 맞추는 레고 블록처럼 코드를 조립할 수 있게 한다.

스프링이 기능을 빠르게 추가해 사용성을 높인 덕분에, 스프링 프레임워크는 J2EE 스택으로 애플리케이션을 구축하는 방법을 찾고 있는 엔터프라이즈 자바 애플리케이션 개발자에게 더 가벼운 대안으로 빠르게 자리 잡았다. 많은 사람이 J2EE를 강력하지만 애플리케이션 개발 팀이 사용하지 않는 기능이 많이 포함된 블로트웨어(bloatware)1로 간주했다. 게다가 J2EE 애플리케이션을 사용하면 모든 특성을 갖춘 (그래서 무거운) 자바 애플리케이션 서버로 애플리케이션을 배포해야 했다.

1 역주 쓸데없이 메모리를 너무 많이 잡아먹는 프로그램을 의미한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.