본문 바로가기
뒤끝 (Back-End)

[Spring boot] 스프링 부트에 대해 알아가기

728x90
더보기

 

스프링 부트의 개념에 대해 자세히 알고 싶어서 

나는 <스프링 붙크와 AWS로 혼자 구현하는 웹 서비스> 와 < 스프링 부트 3 백엔드 개발자 되기: 자바 편 > 

이 두 개의 책을 참고 했지만 아무리 책에서 자세히 설명해줘도 잘 이해가 안되는 빡대가리 때문에

챗GPT 의 힘을 빌려 설명을 덧붙였다. 챗 GPT 설명은 접는 글에 넣어놨다.

 

 

 

클라이언트      ↔       서버

(웹 브라우저)       (스프링 부트)

 

클라이언트 : 서버로 요청하는 프로그램

주소 입력 후 enter 눌러 정보 요청하는 행위 → "서버에 요청한다"

 

서버 : 서버는 클라이언트의 요청을 받아 처리하는 주체

 

더보기

클라이언트(Client):

클라이언트는 일반적으로 웹 브라우저나 모바일 애플리케이션과 같은 사용자 인터페이스를 제공합니다.

사용자가 요청한 데이터를 서버에 보내고, 서버로부터 받은 응답을 표시합니다.
보통 HTML, CSS, JavaScript와 같은 웹 기술을 사용하여 사용자와 상호 작용합니다.


스프링 부트 서버(Spring Boot Server): 
클라이언트로부터의 요청을 받아 처리하고, 필요한 데이터를 가져와 응답을 생성합니다.
주로 웹 애플리케이션의 백엔드 역할을 합니다.
스프링 부트는 스프링 프레임워크의 기능을 편리하게 사용할 수 있도록 설정된 기본적인 설정을 제공합니다.


                 ┌───────────────────────────────────┐
                 │           웹 브라우저 (클라이언트)         │
                 └───────────────────────────────────┘
                             │
                             │ HTTP Request
                             ▼
        ┌────────────────────────────────────────────────┐
        │            스프링 부트 서버 (백엔드)             │
        └────────────────────────────────────────────────┘
                             │
                             │ HTTP Response
                             ▼
                 ┌───────────────────────────────────┐
                 │           웹 브라우저 (클라이언트)         │
                 └───────────────────────────────────┘

웹 브라우저(클라이언트)는 사용자와 상호 작용하고 HTTP 요청을 생성하여 서버에 보냅니다.
스프링 부트 서버는 클라이언트로부터의 HTTP 요청을 수신하여 해당 요청을 처리하고, 필요한 데이터를 가져와서 응답을 생성합니다. 생성된 HTTP 응답은 다시 클라이언트로 전송되어 사용자에게 표시됩니다.

 

데이터베이스 : 여러 사람이 데이터를 한 군데에 모아 놓고 여러 사람이 사용할 목적으로 관리하는 데이터 저장소

 ex ) MySQL, 오라클, 포스트그레SQL → 데이터 베이스 시스템

 

 

클라이언트     ↔    데이터베이스 관리 시스템 (DBMS)     ↔    데이터 베이스

               요청, 응답                                                        관리

 

더보기

DBMS(Database Management System):
DBMS는 데이터베이스를 관리하고 조작하는 소프트웨어 시스템입니다. 데이터베이스에 대한 접근, 쿼리 실행, 데이터 저장 및 보호 등의 작업을 처리합니다.
DBMS는 데이터베이스를 효율적으로 관리하기 위해 다양한 기능을 제공합니다. 이러한 기능에는 데이터 검색, 삽입, 수정, 삭제, 인덱싱, 보안 및 백업/복원 기능이 포함될 수 있습니다.

 

데이터베이스:
데이터베이스는 구조화된 데이터의 모음입니다. 일반적으로 테이블, 열, 행의 형태로 구성되며, 이러한 데이터는 DBMS에 의해 관리됩니다.
데이터베이스는 정보를 구조적으로 저장하여 검색 및 조작이 용이하도록 합니다. 데이터베이스는 특정 목적을 위해 설계되며, 해당 목적에 맞게 구성됩니다. 예를 들어, 은행 시스템에서는 고객 정보, 거래 내역 등의 데이터가 포함될 수 있습니다.

           +-----------------------+             +-----------------------+
           |      Client           |             |    Database Server    |
           |  (웹 브라우저)  |             |  (DBMS가 설치된 서버)  |
           +-----------+-----------+             +-----------+-----------+
                       |                                                |
                       |               Request                   |
                       +------------------------------------->|
                       |                                               |
                       |               Response                |
                       |<-------------------------------------+
                       |                                               |

 

Request(요청): 클라이언트가 DBMS로 보내는 요청을 나타냅니다. 이 요청은 데이터를 검색, 조작 또는 업데이트하는 등의 작업을 수행할 수 있습니다.
Response(응답): DBMS가 요청을 처리한 후 클라이언트에 보내는 응답을 나타냅니다. 응답은 요청된 작업의 결과뿐만 아니라 오류 메시지 등을 포함할 수 있습니다.

 

데이터베이스 종류 : RDB / NoSQL / NewSQL

RDB : 관계형 데이터 베이스, 데이터를 행과 열로 이루어진 테이블로 관리, 기본키 사용해 행 식별

ex ) 오라클, MySQL, SQL 서버

SQL : Structures Query Language 쿼리 및 데이터를 검색하는 언어

NoSQL : SQL을 안 쓴다는 의미 혹은 Not Only SQL, SQL의 성능 문제 해결

 

더보기

관계형 데이터베이스 (Relational Database):
예시: MySQL, PostgreSQL, Oracle, SQL Server
특징: 테이블 간의 관계를 이용하여 데이터를 구성하는 데이터베이스입니다. 데이터는 행과 열의 형태로 구성되며, 각 행은 고유한 식별자를 가지고 있습니다. SQL(Structured Query Language)을 사용하여 데이터를 조작하고 조회할 수 있습니다.
사용 사례: 기업의 업무 처리, 웹 애플리케이션, 소프트웨어 애플리케이션 등


NoSQL 데이터베이스 (Not Only SQL):
예시: MongoDB, Cassandra, Redis, Couchbase
특징: 관계형 데이터베이스와는 다르게 구조화된 스키마를 갖지 않는 데이터베이스입니다. 유연한 데이터 모델을 사용하여 대규모의 분산된 데이터를 저장하고 처리할 수 있습니다. NoSQL 데이터베이스는 스키마를 변경하거나 확장하기 쉽고, 대용량 데이터를 처리하는 데 효율적입니다.
사용 사례: 대량의 데이터를 실시간으로 처리하고 분석하는 시스템, IoT(사물인터넷) 애플리케이션, 소셜 미디어 플랫폼 등


In-Memory 데이터베이스:
예시: Redis, Memcached, VoltDB
특징: 메모리에 데이터를 저장하고 처리하는 데이터베이스입니다. 디스크에 데이터를 저장하는 디스크 기반 데이터베이스보다 빠른 응답 시간을 제공합니다. 주로 빠른 데이터 처리가 요구되는 실시간 애플리케이션에 사용됩니다.
사용 사례: 캐싱 시스템, 실시간 분석, 실시간 주문 처리 등


그래프 데이터베이스:
예시: Neo4j, Amazon Neptune, ArangoDB
특징: 그래프 데이터베이스는 데이터를 노드(Node)와 간선(Edge)의 집합으로 표현합니다. 노드는 개체를 나타내고, 간선은 노드 간의 관계를 나타냅니다. 그래프 데이터베이스는 복잡한 관계를 효율적으로 저장하고 쿼리할 수 있으며, 네트워크 분석, 추천 시스템, 지리 정보 시스템 등에 사용됩니다.
사용 사례: 소셜 네트워크 분석, 지리 정보 시스템, 의료 데이터베이스 등

 

스케일업 : 머신의 성능을 좋게하는 방법 , 장비 업그레이드 방식

스케일다운 : 머신을 여러대로 분리하는 방법, 하지만 데이터베이스 분산, 트랜잭션 사용은 성능 저하를 일으킴

트랜잭션 : 하나의 작업을 수행하기 위해 필요한 데이터베이스의 연산들을 모아놓은 것

 

더보기

스케일업(Scale-up):
스케일업은 단일 서버 또는 머신의 성능을 증가시키는 것을 의미합니다. 이는 서버의 CPU, 메모리, 디스크 공간 등을 업그레이드하여 단일 서버의 처리 능력을 향상시키는 것을 말합니다. 일반적으로 서버 하드웨어의 성능을 높이는 방법으로 스케일업을 수행합니다.

 

스케일다운(Scale-down):
스케일다운은 시스템이나 서비스의 용량을 축소하는 것을 의미합니다. 이는 시스템의 리소스를 줄이거나, 더 작은 사양의 하드웨어로 이전하는 것을 말합니다. 일반적으로 서버의 성능을 감소시키는 방법으로 스케일다운을 수행합니다.

 

주요 차이점:
스케일업은 단일 서버의 성능을 향상시키는 것이고, 스케일다운은 시스템의 용량을 줄이는 것입니다.
스케일업은 더 강력한 하드웨어로 업그레이드하는 것이고, 스케일다운은 더 작고 저렴한 하드웨어로 다운그레이드하는 것입니다.
스케일업은 성능을 증가시켜 처리 능력을 향상시키는 반면, 스케일다운은 비용을 절감하거나 리소스 사용량을 줄이는 것에 중점을 둡니다.
기업이나 조직은 시스템 요구사항이나 부하에 따라 스케일업 또는 스케일다운을 선택하여 리소스 사용을 최적화하고 비용을 절감할 수 있습니다.

 

아이피 : 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소

포트 : 그 서버에서 운용되고 있는 서비스를 구분하기 위한 번호

 

WAS : 간단한 웹 애플리케이션을 실행하기 위한 장치

 

  스프링 스프링 부트
목적 엔더프라이즈 App 개발 더 쉽게 스프링의 개발을 더 빠르고 쉽게
설정 파일 개발자가 수동으로 구성 자동 구성
XML 일부 파일은 XML로 직접 생성, 관리 사용하지 않음
인메모리 데이터 베이스 지원 지원하지 않음 인메모리 데이터베이스 자동 설정 지원
서버 프로젝트를 띄우는 서버 ( 톰켓, 제티)를 별도로 수동 설정 내장형 서버를 제동해 별도의 설정이 필요 없음

 

728x90