관심쟁이 영호

[#1 Spring Boot 정주행] Spring & Spring Boot가 무엇인가? 본문

Bank-End/Spring Boot

[#1 Spring Boot 정주행] Spring & Spring Boot가 무엇인가?

관심쟁이 영호 2021. 9. 9. 16:12
반응형

아는 동생이 개발자를 준비해보겠다고 전화가 왔다.

 

백엔드를 지망하고 있어서 대표적인 Spring 공부를 추천했다.

 

그런데 동생이  "그래서 Spring이 무엇인가요?"라고 물었다.

 

명쾌하게 대답하지 못하는 내 자신을 보았다.

 

"Spring은 웹 개발을 하기 위해서 각종 도구와 기술이 집약되어있는 프레임워크야"라고 이야기했지만,

솔직히 나도 완벽히 이해하지 못하고 있는 느낌이다.

 

그래서 이번 기회에 Spring MVC 구조를 살펴보며 차근차근 다루어볼 예정이다.

 


 

이번 포스팅 글의 목적은 다음과 같다.

 

Spring & Spring Boot란 무엇인가?

 


목차

  • JAVA
  • Web Application
  • 귀차니즘
  • Framework
  • Spring
  • Spring Boot

JAVA

 

가장 먼저 JAVA가 무엇인지 알아야 될 것 같다.

 

대부분의 사람들이 알 거라고 생각한다!

JAVA란 "자바(Java)는 자바로 기술된 프로그램 개발 및 실행을 할 수 있는 소프트웨어 모임의 총칭이다." - 위키백과

라고 한다.

 

비유를 하여 내 생각대로 정리를 하자면,

JAVA는 마치 모래성의 모래와 같다고 생각한다.

모래의 기본적인 점성, 강도 등등을 이용하여 모래성을 만든다.

 

웹 애플리케이션 또한,

JAVA의 특성을 이용하여 짓는 모래성과 같다.

JAVA의 메모리 조작, 연산, 객체지향 개념 등등을 이용하여 웹 애플리케이션을 만드는 것이다.

 

그래서 가장 먼저 배우는 것이 C, JAVA, Python 등과 같은 프로그래밍 언어를 배우는 것이다.

(걸을 줄 알아야 뛸 것이고, 점프를 할 것이고..)

 


 

Web Application

웹 애플리케이션은 무엇일까? 이것을 이해하기 위해서는 가장 먼저 애플리케이션에 대해서 알아두어야 할 것이다.

 

애플리케이션이란 다음과 같다.

"특정한 일을 하도록 설계된 프로그램"이다.

JAVA를 처음 배우며, "Hello World"를 출력해본 적이 있을 것이다.

그 또한 "Hello World를 출력하는 Application"이라고 부를 수 있다.

 

그럼 웹 애플리케이션은 무엇인가?

요약해서 말하자면, "웹 애플리케이션이란 웹 상에서 동작하는 애플리케이션이다."

 

말 그대로 이야기하는 것과 같아서 나도 당황스럽다..ㅋㅋㅋ

출처 : https://velog.io/@aerirang647/2020-02-06-1502-%EC%9E%91%EC%84%B1%EB%90%A8-91k6acegdu

위의 그림에서 "WAS"가 웹 애플리케이션이다.

 

"웹을 통해 어떠한 요청을 하면 요청에 따라 동적인 동작을 하도록 설계된 프로그램이다."

 

더 쉽게 이야기하자면,

네이버에서

"뉴스" 버튼을 클릭 시, 뉴스 화면

"웹툰" 버튼을 클릭 시, 웹툰 화면

"메일" 버튼을 클릭 시, 메일 화면이 나온다.

 

네이버 회사 컴퓨터에 해당 버튼이 클릭되면, 해당하는 화면이 나오도록 JAVA로 코딩되어 있을 것이다.

그게 웹 애플리케이션이다!

 


귀차니즘

지금까지 살아오면서 로그인을 해본 적 있을 것이다.

로그인은 모든 페이지가 비슷하다.

 

ID와 PASSWORD를 입력하고

맞으면 로그인 성공

맞지 않으면 로그인 실패

 

모든 페이지가 2가지의 값을 입력받고 해당하는 입력이 올바른 입력인지 웹 애플리케이션이 체크를 하게 된다.

그럼 그에 해당하는 코드를 웹 애플리케이션에 써넣었을 것이다.

 

매번 같은 코드를 입력해야 하는데 귀찮다..

그래서 이러한 코드를 하나의 뭉탱이로 묶어서 사용하고 싶은 곳에 코드를 다운로드만 하게 함으로써 코드를 치지 않게 하면 어떨까?

 

그래서 그렇게 사용하게 되었다!

그 뭉탱이를 "라이브러리"라고 부른다.

 

우리는 라이브러리를 다운로드하고 사용한다.

대표적으로 "JAVA의 String"도 JAVA의 라이브러리인  java.lang.String에 들어있는 것이다.

 

ㅇㅋ 귀차니즘 해결

 


Framework

또 다른 문제가 생겼다.

 

각종 코드를 다운로드하여 편하게 사용하는 것은 완료하였다.

하지만 코드의 양이 방대해지면서, 개발자마다 코드의 구조가 너무나 다른 것이다.. 협업하기 너무 힘든 것이다..

 

그래서 효율적인 코드 구조를 인도하는 Frame을 만들어 제공을 했다!

그래서 하나의 Frame안에서 work를 한다 해서 Framework라 일컫는다.

 


Spring

스프링은 JAVA 진영의 대표적인 Framework이다.

 

위키백과에서는 다음과 같이 말한다.

"스프링 프레임워크(영어Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다."

 

웹 앱을 개발하면서 필요한 요소와 서비스를 제공해주는 것이다!

 


Spring Boot

Spring과 Spring Boot에 대한 정확한 차이를 모르는 사람도 많을 것이다!

 

Spring을 사용하면서 사람들이 또 귀차니즘을 느낀다.

Spring에 apache 서버를 장착, bean 등록 등과 같이 불편한 점을 느끼기 시작했다.

 

그래서 이러한 불편한 일을 자동적으로 지원해주는 Spring Boot가 생겨난 것이다!

 


추가 내용

 

Spring에서 제공하는 서비스를 보자.

 

엄청나게 많아서 하나하나 볼 수 없지만 대표적인 몇 가지를 보자!

 

  1. Spring Container
  2. Dependency Injection(DI)
  3. ORM (Object Relational Mapping) 지원
  4. AOP (Aspect Oriented Programming) 지원

등등 수십 가지가 더 있다!

 

추후에 해당 기술들에 대한 공부를 하며 글을 올려보자!

 

 

 

300x250
Comments