관리 메뉴

VivaButton

[스프링부트, Spring Boot]프레임워크 알고가기 #1 본문

IT/스프링부트(Spring Boot)

[스프링부트, Spring Boot]프레임워크 알고가기 #1

비바버튼 2019. 5. 1. 21:00
728x90

스프링을 처음 접한건 수년 전 2.5 버전 때부터이지만, 이전에는 자바 기반의 웹개발 프로젝트에서는 개발자들이 각자 나만의 프레임워크를 만들어 사용하기도 하고, 스트러츠 등의 프레임워크를 사용하기도 했지만, 스프링3 이후 스프링이 프레임워크 계를 천하통일하고, 프레임워크의 표준이 되어버린듯 하다. 프리랜서 자바 개발자로 수년간 일을 해오다 정규직으로 입사를 한 후 약 일년반동안 파이썬 이외 기술기획 업무를 하다보니, 현재는 자바와 스프링에 대한게 하나도 기억이 안나는 슬픈 현실. 물론 잠시? 어쩔수  없는 기술적 외도?를 하는 동안 얻은것이 없는건 아니지만, 개발자는 개발을 하고 살아야 한다는 사명감에 다시 자바와 스프링을 공부해보려 합니다.

일단 잠시 잊고 지냈던 스프링에 대해 다시한번 리마인드하는 시간을 잠시 가지는 겸 해서 프레임워크 관련 주요 개념부터 알아보고 넘어 가도록 하겠습니다.

디자인 패턴(Design Pattern)

절차형 언어에서 객체지향 언어로 넘어오면서 설계의 중요성이 커졌습니다. 객체지향은 객체들이 서로 메시지를 주고 받고 서로를 사용하면서 작업을 수행하기 때문에 객체를 어떻게 설정하고 객체간 관계를 어떻게 정할 것인지 이런 설계 작업이 중요해졌습니다. 객체지향을 처음 배우는 사람들에게 이런 설계 개념을 설명하기 위해서 기존 개발 건 중에 설계가 잘 된 케이스들을 가르치기 시작했습니다. 이런 케이스들을 이름을 붙이고 목적과 용도, 그리고 구현방법을 잘 정리해놓은 것이 바로 디자인 패턴입니다. 쉽게 말하면, 개발자들이 어떠한 문제를 해결하기 위한 최적의 답안(best practice)을 이름을 붙여 만들어 놓은것이라고 하겠습니다.  아무렇게나 설계하는 것이 아니라 필요한 디자인 패턴을 참고해서 설계하면 효율저긍로 설계 할 수가 있게 되었죠.

라이브러리(Library)

라이브러리는 어떠한 기능을 다른 사람들도 사용 할 수 있도록 만들어 놓은 기능들의 집합을 말합니다. 예를 들어, 내가 만드는 애플리케이션 안에 이미지 변환 기능이 필요하면 이미지 변환 기능이 필요한 사람들은 모두 기능을 각자 구현해야 겠죠. 하지만 그렇게 하지 않고 이미지 변환 기능을 다른 사람들도 소스 안에서 사용 할 수 있도록 jar 파일 형태로 패키징 해서 제공하는 것이 바로 라이브러리입니다. (오픈소스 라이브러리가 많지 않던 시절 실제로 같은 기능을 개발자들이 각자 개발해서 사용하는 경우가 많았죠... )

프레임워크 (Framework) = 디자인패턴 + 라이브러리

프레임워크란 이름에서부터 알 수 있듯이 뼈대, 틀이며, 애플리케이션을 개발할 때 사용하는 틀이라고 생각하면 됩니다. 앞에서 말한 디자인패턴과 라이브러리들을 모아 소프트웨어의 개발에 필수적이고 표준적인 부분에 해당하는 설계와 구현을 재사용이 가능하도록, 일련의 협업화된 형태의 클래스들로 제공하는 반제품 소프트웨어 모듈이라고 볼 수 있겠습니다. 그래서 프레임워크를 사용하면 여러가지 유용한 기능을 통해 개발자는 구현해야 하는 핵심 로직에 집중할 수가 있습니다. 예를 들어서, 해변에 앉아있는 사람을 그리고 싶다면, 이미 해변이 그려져 있는 그림을 가져다가 내가 그리고 싶은 앉아 있는 사람만 그리는 거라고 할 수 있습니다. 

이를 통해서 사용자는 개발 생산성 향상과 일정 수준 이상의 품질을 부장 받을 수 있습니다. 개발자의 실력에 상관없이 고급 기능들을 적용할 수 있기 때문에 대규모 프로젝트에서는 플게임워크를 반드시 사용합니다. 

프로젝트의 사이즈를 너무 작게 잡고 프로젝트를 시작하여, 프레임워크를 적용하지 않고, 개발을 시작하는 경우가 종종 있는데, 이 경우 프로젝트 중간에 프레임워크를 도입하는 경우도 발생하곤 합니다.

다음 포스팅에서는 스프링 프레임워크와 스프링부트에 대해 알아보도록 하겠습니다.