이 글은 스프링부트3 백엔드 개발자 되기 책을 바탕으로 공부한 내용을 정리한 게시글 입니다.
인터넷 서비스는 보통 서버와 클라이언트가 관계를 맺습니다. 클라이언트가 서버에 다양한 요청을 하면 클라이언트가 요청한 내용을 처리하고 응답하는 식으로 서비스가 이루어 집니다.
1. 클라이언트란?
클라이언트는 서버로 요청하는 프로그램을 모두 일컬어 말합니다. 대표적으로 웹브라우저가 있습니다.
클라이언트의 주요 역할은 다음과 같습니다:
- 요청(Request): 사용자의 입력(버튼 클릭, 링크 클릭 등)에 따라 서버에 데이터를 요청합니다. 예를 들어, 검색어를 입력하고 검색 버튼을 누르면 클라이언트는 서버에 검색어와 함께 데이터를 요청합니다.
- 응답(Response) 처리: 서버에서 응답받은 데이터를 사용자에게 보여줍니다. 서버가 보낸 HTML, CSS, JavaScript, 이미지, 동영상 등의 자원을 렌더링하거나 앱 화면에 데이터를 표시합니다.
2. 서버란?
서버는 클라이언트의 요청을 받아 처리하는 주체입니다. 클라이언트가 요청(Request)을 보내면 이를 처리하고 응답(Response)을 반환합니다.
서버의 주요 역할은 다음과 같습니다.
- 요청 처리(Request Handling): 클라이언트가 보낸 요청을 받아 적절히 처리합니다. 예를 들어, 사용자가 웹사이트에서 특정 페이지를 요청하면 서버는 해당 페이지의 데이터를 클라이언트에 전달합니다.
- 데이터 관리(Data Management): 서버는 데이터베이스와 연결되어 데이터를 저장하고 관리하며, 클라이언트의 요청에 따라 데이터를 조회하거나 수정합니다.
- 응답(Response) 제공: 요청을 처리한 후, 클라이언트가 이해할 수 있는 형태(HTML, JSON, XML 등)로 응답을 반환합니다.
- 보안(Security): 사용자 인증 및 권한 부여, 데이터 암호화 등 보안 기능을 통해 안전하게 서비스를 제공합니다.
- 자원 관리(Resource Management): 서버는 여러 클라이언트의 요청을 효율적으로 처리하기 위해 CPU, 메모리, 저장소 등 자원을 관리합니다.
서버의 동작과정 입니다.
- 클라이언트 요청 → 사용자가 웹사이트에 접속하거나 앱에서 데이터를 요청합니다.
- 요청 수신 → 서버는 클라이언트의 요청을 받아 해당 요청을 해석합니다.
- 처리 및 데이터 조회 → 서버는 요청에 따라 비즈니스 로직을 실행하고, 필요한 경우 데이터베이스에서 데이터를 조회하거나 저장합니다.
- 응답 반환 → 처리 결과를 클라이언트가 이해할 수 있는 형태(HTML, JSON 등)로 변환하여 응답합니다.
- 클라이언트 출력 → 클라이언트는 서버의 응답을 받아 사용자에게 화면으로 보여줍니다.
그럼 서버에서 데이터를 조회하고 데이터를 조회하거나 저장 할 수 있는 데이터베이스에 대해 설명드리겠습니다.
3.데이터베이스란?
데이터베이스는 여러사람이 데이터를 한군데에 모아놓고 여러 사람이 사용 할 목적으로 관리하는 데이터 저장소 입니다.
데이터베이스의 구성요소
- 데이터베이스(DB): 실제 데이터가 저장되어 있는 공간입니다.
- DBMS(Database Management System): 데이터베이스를 관리하고 운영하는 소프트웨어입니다. 사용자가 쉽게 데이터를 추가, 삭제, 검색할 수 있도록 도와줍니다.
- SQL(Structured Query Language): 데이터베이스와 소통하기 위해 사용하는 언어로, 데이터를 조회하거나 수정할 때 사용합니다.
데이터베이스의 종류
1. RDB
데이터 베이스는 여러 가지로 구분 할 수 있는데 RDB,NoSQL, NewSQL등 여러 종류가 있습니다. 그 중 가장 많이 사용하는 데이터베이스는 RDB입니다. 관계형데이터베이스(Relational DataBase)의 줄인말로 데이터를 행과 열로 이루어진 테이블로 관리하며 기본(primary key)를 사용하여 각 행을 식별 합니다. 도 한 각 테이블 간에 관계를 지을 수 있습니다.
예시로는 MySQL, PostgreSQL, Oracle, Microsoft SQL Server가 있습니다.
2. NoSQL
NoSQL의 뜻이 SQL을 안쓴다는 의미로 사용되기도 합니다만 최근에는 Not Only SQL의 의미로 많이 사용합니다. RDB가 데이터를 처리하는데는 용이하지만 성능을 올리는게 쉽지 않습니다. 이러한 단점을 보안하게 위해 NoSQL이 등장하였습니다. NoSQL은 데이터를 비정형적으로 저장하며, 대용량 데이터 처리에 유리합니다. 데이터 모델링 방법에 따라 다양한 NoSQL 데이터베이스들이 있습니다.
예시: MongoDB, Redis, Cassandra, Firebase
3. 키-값 저장소(Key-Value Store)
데이터를 키(Key)와 값(Value) 형태로 저장합니다.
빠른 데이터 검색이 필요한 경우에 사용됩니다.
예시: Redis, DynamoDB
4.문서 지향(Document-Oriented) 데이터베이스
데이터를 JSON, BSON 같은 문서 형태로 저장합니다.
구조가 유연하며, 대규모 데이터 처리가 가능합니다.
예시: MongoDB, CouchDB
4. 아이피와 포트
아이피는 인터넷에서 컴퓨터 또는 기기들이 서로를 식별하고 통신하기 위한 주소입니다. 그래서 아이피를 알면 서버를 찾을 수 있습니다. 하지만 서버를 이용할려면 아이피만 알아서는 안 됩니다. 프트까지 알아야 합니다. 아이피가 서버를 찾기 위한 번호라면 포트는 그 서버에서 운용되고 있는 서비스를 구분히기 위한 번호 입니다.
우리가 흔히 사용하는 웹브라우저의 주소에는 사실 아이피와 포트가 들어 있습니다. 예를 들어 www.naver.com 과 같은 주소는 아이피를 쉽게 알아보기 위해 이름표를 붙인 것이고, 그 앞에 있는 http://라는 것이 서버의 443번 포트를 사용하기 위한 입력 입니다.
저희가 앞서 실행한 스프링 부트 같은 경우는 서버를 실행하였을 때 로그를 통해 포트번호를 확인 할 수 있습니다.
https://easycoading.tistory.com/49
저희는 8080포트를 이용하고 있습니다. 포트번호는 언제든지 바꿀 수 있습니다.
'개발자 취업준비 > springboot' 카테고리의 다른 글
관점 지향 프로그래밍(AOP) (1) | 2025.01.21 |
---|---|
제어의 역전(IoC)와 의존성 주입(DI) (1) | 2025.01.19 |
라이브러리와 프레임워크 (0) | 2025.01.15 |
스프링부트 프로젝트 생성 및 초기설정 git연결 (0) | 2025.01.12 |
의존성주입 (0) | 2024.10.26 |