네트워크 : 여러 대의 컴퓨터 또는 장비가 서로 연결되어 정보를 주고받을 수 있도록 도와주는 기술
- 정보를 주고받기 위해서는 IP주소, 서브넷 마스크, 게이트웨이 등의 정보를 설정하고 네트워크 프로토콜을 이해서 통신함
Client & Server
- 사용자는 브라우저를 이요하여 서버에 정보를 요청하고 응답을 받음
- 이때 사용자의 요청이 서버에 도달하기 위해서는 해당 서버의 정보가 필요함
- IP 주소 : 위의 사용자의 요청이 해당 서버에 정확하게 도달할 수 있도록 제공되는 정보
- 택배로 예시를 들면 [서울시 마포구 ***]라는 택배를 받을 주소가 네트워크에서는 [192.168.**.*] 같은 IP 주소가 된다.
- 여기서 택배를 받을 사람을 네트워크 상에서는 8080과 같은 포트가 된다.
- 택배를 받기 위해 택배을 받을 실제 주소와 사람을 알려주듯 네트워크에서도 정보를 요청받고 전달하기 위해 주소에 해당하는 IP와 받는 사람에 해당하는 포트번호를 알려줘야 함.
- IP 주소 : 위의 사용자의 요청이 해당 서버에 정확하게 도달할 수 있도록 제공되는 정보
- 이때 사용자의 요청이 서버에 도달하기 위해서는 해당 서버의 정보가 필요함
웹 서버 : 인터넷을 통해 HTTP를 이용하여 웹상의 클라이언트의 요청을 응답해 주는 통신을 하는 일종의 컴퓨터
웹 서버의 기본 동작 원리
- 브라우저를 통해 HTTP Request로 웹사이트를 웹서버에 요청
- 웹서버는 요청을 승인하고 HTTP Rsponse를 통해 웹사이트 데이터를 브라우저에 전송
- 브라우저는 서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려내는 일을 함
- 기본적으로 브라우저가 웹서버에 요청을 할 때는 항상 GET method로 요청
API : 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의함
- 즉, 하나의 약속으로 서로 다른 애플리케이션이 약속한 방식의 API 요청을 수행하면 정해진 결과물을 반환함
인터페이스 : 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면을 의미함
- 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템
RESTful API : API 작동 방식에 대한 조건을 부과하는 소프트웨어아키텍처
- REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어짐
- REST API : REST 아키텍처 스타일을 따르는 API
- RESTful 웹 서비스 : REST 아키텍처를 구현하는 웹 서비스
⇒ HTTP를 준수하며 잘 설계되었다면 RESTful 하게 설계되었다고 볼 수 있음
Web Server & Web Application Server(WAS)
Web Server
- 브라우저에서 URL을 입력하여 어떠한 페이지를 요청했을 때 HTTP의 요청을 받아들여 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해 주는 역할을 함
웹 서버의 역할
- 정적인 콘텐츠(이미 완성되어 있는 HTML 같은 문서)를 브라우저로 전달
- 브라우저로부터 동적인 요청(로그인 후 MyPage 요청)이 들어왔을 때 웹 서버 자체적으로 처리하기 어려움 ⇒ 해당 요청을 WAS에 전달함
웹 서버 종류
- Apache, Nginx 등
WAS
- 웹 서버와 똑같이 HTTP를 기반으로 동작
- 웹 서버에서 할 수 있는 기능 대부분 WAS에서도 처리 가능함
- WAS를 사용하여 로그인, 회원가입 등을 처리할 수 있으며 게시물을 조회하거나 정렬하는 등의 다양한 로직들을 수행하는 프로그램 동작시킬 수 있음
WAS 종류
- Tomcat, JBoss
Tomcat
- 동적인 처리를 할 수 있는 웹 서버를 만들기 위한 웹 컨테이너
Apache Tomcat
- Apache와 Tomcat이 합쳐진 형태로 정적인 데이터 처리와 동적인 데이터를 효율적으로 처리해 줌
Spring
- Spring 프레임워크는 AOP, IoC/DI 등과 같은 아주 강력한 핵심 기능들을 가지고 있음
- 하지만 이러한 핵심 기능들을 사용하기 위해서는 너무나도 많은 xml 설정들이 필요했고 이러한 불편함을 개선하기 위해 SpringBoot가 생김
'🗂️ Study > 🌿Spring' 카테고리의 다른 글
Spring MVC (0) | 2024.05.21 |
---|---|
Lombok & application.properties (0) | 2024.05.21 |
Test Code (0) | 2024.05.21 |
HTTP (HyperText Transfer Protocol) (0) | 2024.05.20 |
Gradle (0) | 2024.05.17 |