728x90
✨ 이 글은 [ 코드프레소 Java 웹 개발 체험단 활동 ] 내용입니다 ✨
💜 코드프레소 이러닝 강의 수강 중 - Spring Boot 웹 개발 입문 💜
😎 아래의 링크를 통해 프리미엄 IT 교육 서비스, 코드프레소를 확인해보세요 😎
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
'코드프레소 체험단 > Spring Boot를 활용합 웹 개발' 카테고리의 다른 글
[Spring Boot 웹 개발 입문] RequestMapping과 URI, HTTP API의 개념 (0) | 2022.02.03 |
---|---|
[Spring Boot 웹 개발 입문] 계층형 아키텍처와 컨트롤러 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] Web의 기초 개념과 HTTP의 기초 활용 (2) (0) | 2022.01.28 |
[Spring Boot 웹 개발 입문] Web의 기초 개념과 HTTP의 기초 활용 (1) (0) | 2022.01.28 |
[Spring Boot 웹 개발 입문] 실습 환경 구성 및 실습 (0) | 2022.01.28 |
댓글