본문 바로가기
코드프레소 체험단/Spring Boot를 활용합 웹 개발

[Spring Boot 웹 개발 입문] Spring Framework 소개

by 의정부핵꿀밤 2022. 1. 28.
728x90

✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨

💜 코드프레소 이러닝 강의 수강 중 - Spring Boot 웹 개발 입문 💜

😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎

https://www.codepresso.kr/

 

프리미엄 IT 교육 서비스 - 코드프레소

 

www.codepresso.kr


Spring Framework 소개

  • Rod Johnson에 의해 개발되었고, 2004년에 1.0 버전이 출시되었다
  • 2017년에 Spring Framework 5.0이 출시되었다
  • 2014년에 Spring Boot 1.0이 출시되었고, 2020 기준 Spring Boot 2.x가 활용되고 있다

 

 

Spring Framework의 활용

  • Spring Framework는 웹 개발만을 위한 Framework는 아니지만, 주로 웹 애플리케이션 개발을 위해 활용된다
  • 작은 게시판과 같은 웹 애플리케이션부터 Netflix 수준의 대규모 애플리케이션을 개발하는 데 적용이 가능하다
  • 국내외 많은 기업들이 Spring Framewok를 핵심 기술로 활용하고 있다

취업하고 싶어? 그럼 스프링 공부해

 

 

Spring Framework의 장점

  • 경량화된 Java Framework
  • POJO의 사용으로 재사용 가능한 코드를 개발할 수 있다
  • DI와 AOP의 적용이 가능하다
  • Transaction 관리가 편하다
  • MVC 아키텍처를 지원한다
  • 테스트가 용이하다
  • 높은 보안성을 자랑한다

 

 

 

Spring Framework의 장점 1 - 방대한 프로젝트

  • Spring Framework는 22개 카테고리의 수 백개의 프로젝트를 보유하고 있다
  • 대규모의 웹 애플리케이션을 개발/운영을 위한 거의 모든 기술을 제공한다

 

 

Spring Framework의 장점 2 - 끊임없는 개선

  • 최근 SW 시스템은 점점 거대해지고 복잡해지고 있다
  • 더 나은 SW 시스템을 위한 다양한 기술과 아키텍처가 소개되고 있다
    • 마이크로서비스 아키텍처
    • NoSQL
    • 클라우드 컴퓨팅 및 컨테이너
  • Spring Framework는 변화하는 기술에 빠르게 대응하여 꾸준히 새로운 프로젝트를 출시하고 있다
    • Spring Cloud 프로젝트, Spring Native 등..

 

 

Spring Framework의 단점 1 - 높은 러닝 커브

  • Bean, DI, AOP, 객체지향 설계, 디자인 패턴 등 다양한 개념 이해가 필요하다!
  • Spring Framework는 엔터프라이즈 급 대규모 서비스 개발을 위한 목적으로 개발되었다
  • SW의 유연한 확장성을 위해 다양한 기술들이 내포되어 있다

 

 

Spring Framework의 단점 2 - 복잡한 설정

  • "Spring Framework는 XML 지옥이다" 라는 말이 나올 정도로 설정할 파일이 많았다
  • 간단한 웹 어플리케이션 개발을 위해서도 상당한 수준의 설정이 필요했다
    • Spring Framework는 무겁다, 대기업에서나 쓸 만한 기술이다 라는 얘기가 많이 나온다
  • 그러나 위 문제는 Spring Boot가 출시되며 단번에 문제가 해결되었다!
    • 자동화된 설정, 간편화 된 의존성 관리 등..

 

 

 

Spring Boot 란?

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run"
- Official Intro

  • Spring Framework를 보다 손쉽게 활용할 수 있게 지원하는 기술이다
  • 이 또한 Spring Framework를 기반으로 한다 (별개의 기술이 아니다!)
  • 설정, 의존성 관리, 애플리케이션 모니터링, 서버의 실행 등을 가볍고 빠르게 수행할 수 있다

 

 

Spring Boot의 주요 기능

  • 설정 간편화를 위한 Auto Configuration
  • 의존성 관리를 위한 Starter Project
  • 배포 프로세스 간소화를 위한 Embedded WAS
  • 애플리케이션의 모니터링을 위한 Actuator

 


< 웹 서비스 개발과 Web Framework의 이해 >

 

웹 서비스 개발 및 운영의 직군

  • 퍼블리싱, 마크업 개발
  • 프론트엔드 개발
    • 웹 프론트엔드 개발
    • 모바일 앱 개발
  • 백엔드 개발
    • REST API 개발
    • 프론트엔드에서 호출하는 API
  • DB 설계, 운영
  • 시스템 엔지니어링 / 인프라 엔지니어링

 

 

웹 서비스 개발의 기본 구조

프론트엔드 <-> 백엔드 <-> 데이터베이스

 

 

 

퍼블리싱 / 마크업 개발

  • 사용자에게 노출되는 웹 화면을 개발한다
  • 디자인을 HTML/CSS 코드로 옮기는 과정이다
  • HTML, CSS를 주로 사용하고, JavaScript를 일부 사용한다
    • 화면의 정보와 구조를 나타내기 위해 HTML 사용
    • 화면의 스타일을 꾸미기 위해 CSS 사용
    • 사용자 이벤트를 처리하기 위해 JavaScript 사용

 

 

 

프론트엔드 개발

  • 사용자 화면과 백엔드(DB)와의 중간 커뮤니케이션 역할을 한다
  • 사용자의 입력/이벤트를 받아 백엔드로 전송한다
  • 백엔드의 데이터를 받아 화면에 노출한다
  • JavaScrip, jQuery 등이 전통적으로 많이 사용된다
  • 최근에는 VueJS, ReactJs, AngularJS 등의 프론트엔드를 위한 Framework 등이 많이 사용된다

 

 

 

백엔드 개발

  • 웹 서비스의 비즈니스 로직을 처리하는 부분이다
  • 브라우저에서의 사용자 요청을 받아 적절하게 처리한다
    • 로직 처리
    • DB 연동
    • 외부 시스템 연동(Mail, CRM 등)
  • Spring, Django, Flask, NodeJS 등의 Web Framewokr를 활용하여 개발한다

 

 

 

DB 설계 / 운영

  • 웹 서비스의 데이터가 저장될 DB 설계를 하고, DBMS를 운영 및 관리한다
  • 데이터는 웹 서비스의 가장 중요한 요소 중 하나이다
  • DB 분석/설계와 DBMS 운영은 다른 역할이다
  • RDBMS로는 Oracle, MySQL, PostgreSQL, MSSQL 등이 주로 사용된다
  • NoSQL로는 MongoDB, Cassandra, DynamoDB, Elasticsearch 등이 주로 사용된다

 

 

 

시스템 엔지니어링, 인프라 엔지니어링

  • 웹 서비스가 운영되는 기간 인프라를 설계하고 운영한다
  • 서버, 네트워킹, 스토리지, 보안 등의 설계, 구축, 운영을 한다
  • 기존에는 서버를 직접 관리하는 온 프레미스 기반의 시스템을 운영했다
  • 최근에는 클라우드 및 컨테이너 기반의 시스템 운영으로 전환 중이다
    • AWS, Azure, GCP, NCP ...
    • Docker, Kubernetes

 

 

Web Framework

  • Spring - Java
  • Flask - Python
  • Django - Python
  • NodeJS - Javascript
  • Laravel - PHP
  • Rails - Ruby

 

 

SW Framework

  • SW 개발을 효율적으로 하기 위한 반제품이다
  • 특정 분야의 SW 개발에 필요한 공통 기능을 제공한다
  • 사용자는 Framework 에 필요한 기능을 추가하여 전체 애플리케이션을 완성한다

 

 

 

Web Framework

  • 웹 개발을 위한 SW 반제품
  • 보안, HTTP 요청 처리, DB 연동 등의 웹 애플리케이션 공통 기능을 제공한다
  • 사용자는 Framework 위에 필요한 비즈니스 로직을 구현하여 전체 웹 애플리케이션을 완성한다

 

 

 

Library vs Framework

 

  • 공통점
    • 재사용 가능한 미리 구현된 유용한 코드(모듈)을 제공한다
    • 특정 목적을 위해 구현된 코드를 사용함으로써 효율적인 개발이 가능하다
  • 차이점
    • SW 제어의 흐름을 누가 결정하는 가에 차이가 있다
    • Library : 제어권이 사용자의 코드에 있다
    • Framework : 제어권이 Framework에 있다

 

 

 

Framework의 활용

  • 처음 Framework를 학습할 때에는 전체 그림이 그려지지 않아 혼란스러운 경우가 많다
  • 따라서 첫번째로 Framework이 제공하는 계약(약속)을 하나씩 이해해 나가야 한다
  • Framework의 기본 활용에 익숙해지면, 다음 단계로 Framework의 내부 동작 매커니즘을 이해하도록 노력해야 한다
728x90

댓글