티스토리 뷰
728x90
반응형
1. 웹 애플리케이션
1) HTTP 프로토콜
서버와 클라이언트가 데이터를 주고 받기 위한 프로토콜(규약)이다.
- HTTP/1.1, HTTP/2는 TCP 기반 위에서 동작하고,
- HTTP/3는 UDP 기반 위에서 동작한다.
2) TCP와 UDP
- TCP는 인터넷상에서 IP와 함께 데이터를 메시지 형태로 전송하는 프로토콜이다. 3-way handshaking 과정을 통해 연결이 된다. 속도는 느리지만 높은 신뢰성을 보장함으로 파일 전송 등에 쓰인다.
- UDP는 데이터를 데이터그램 단위로 처리하는 비연결형 프로토콜이다. 속도가 빠르고 네트워크 부하가 적지만 신뢰성 있는 데이터 전송을 보장하지 못한다. 때문에 연속성이 더 중요한 실시간 서비스(streaming)에 쓰인다.
TCP, UDP 참고 (https://mangkyu.tistory.com/15)
3) HTTP 특징
- 클라이언트 - 서버 모델
- 클라이언트가 서버에 요청을 보내면 응답을 보내는 모델
- 무상태(Stateless) 프로토콜
- 클라이언트가 서버에 요청을 보내면 close 상태가 된다. 다시 요청을 보낼 때는 다시 연결을 해야한다.
- 해결책으로는 Keep-Alive가 사용되는데, 이 또한 클라이언트 요청이 많아질 때는 신규 사용자를 못받는 문제가 생긴다. (스레드 부족 현상)
- 비연결성(Connetionless)
- 서버가 클라이언트 요정에 대한 응답을 마치면 연결을 끊는 것을 말한다.
- 쿠키나 세션, JWT를 통해 정보를 임시 저장할 수 있다.
- HTTP 프로토콜은 리소스 낭비를 감소하고 많은 연결을 할 수 있도록 설계되어 있다.
4) 추가로 더 공부할 내용
- HTTP 요청 메소드
- GET, POST, PUT, DELETE 등
- HTTP 응답 코드
- 2xx(성공), 3xx(리다이렉션), 4xx(클라이언트 에러), 5xx(서버 에러) 등
- HTTP 헤더
- Content-type, Accept, Cookie, Set-Cookie, Authorization 등
2. 계산기 프로그램을 웹 애플리케이션
1) 계산기 프로그램을 웹 애플리케이션으로 만들기
- Step1 - 사용자 요청을 메인 Thread가 처리하도록 한다.
- Step2 - 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리하도록 한다.
- Step3 - Thread Pool을 적용해 안정적인 서비스가 가능하도록 한다.
(1) 새 프로젝트 생성
- Name: was-practice
- Language: Java 11
- Build system: Gradle
- JDK: temurin 11
- Gradle DSL: Groovy
(2) 의존성 추가
implementation 'ch.qos.logback:logback-classic:1.2.3'
testImplementation 'org.assertj:assertj-core:3.23.1'
(3) 구현된 계산기 코드를 가져와 웹 애플리케이션으로 만들기
- 예를 들어 GET으로 calculate 요청이 들어 온다면 계산을 해준다.
- GET /calculate?operand1=11&operator=*&operand2=55
(4) 구현 참고사항
- Server 클래스를 생성하고 logger를 사용하여 처리 상황에 대한 로그를 남길 수 있다.
- HTTP 요청 파일을 생성한다.
- GET http://localhost:8080
- 위와 같이 작성하고 실행하면 실제 HTTP 요청을 받은 것처럼 작동 가능하다
- 처리 과정을 line by line으로 읽기 위해 BufferReader를 사용한다.
- BufferReader에는 요청 형태, Host, Connection, User-Agent, Accept-Encoding 정보 등이 포함된다.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완
728x90
반응형
'Study > FastCampus' 카테고리의 다른 글
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 서블릿 프로그램 (0) | 2023.08.15 |
---|---|
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 웹 애플리케이션2 (0) | 2023.08.14 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 학점계산기, 음식주문 (0) | 2023.08.12 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 객체지향 (0) | 2023.08.11 |
[Java Project] Part 1. 나만의 MVC 프레임워크 만들기 - 테스트코드 (0) | 2023.08.10 |
댓글