본문 바로가기

Java/[패스트캠퍼스] 50일 포트폴리오 챌린지

[7일차] 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring)

수강 강의명
수강 강의명

 

계산기 웹 애플리케이션

요구사항

• Step1 : 사용자 요청을 메인 Thread가 처리하도록 한다.
• Step2 : 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리 하도록 한다.
• Step3 : Thread Pool을 적용해 안정적인 서비스가 가능하도록 한다.

 

문제점

Step1 : 사용자 요청을 메인 Thread가 처리하도록 한다.

메인 Thread의 작업이 오래 걸리면 다음 요청이 메인 Thread가 끝날 때까지 기다려야 한다.
 

Step2 : 사용자 요청이 들어올 때마다 Thread를 새로 생성해서 사용자 요청을 처리 하도록 한다.

동시 접속자의 수가 많아지면 많아질수록, 많은 쓰레드가 생성된다.(비용적인 측면, 성능 저하)
이로 인해 CPU Context Switching 횟수와 CPU 및 메모리의 사용량이 증가하게 된다.
최악의 경우 서버 리소스의 한계로 인해 서버가 다운될 가능성이 높다.
 

해결 방법

Step3 : Thread Pool을 적용해 안정적인 서비스가 가능하도록 한다.

Thread Pool에서 Thread를 꺼내 사용하도록 한다.

 

CGI 프로그램과 서블릿

CGI(Common Gateway Interface)

웹 서버와 애플리케이션 사이에 데이터를 주고받는 규약이다.
CGI 규칙에 따라 만들어진 프로그램을 CGI 프로그램이라 한다.
CGI 프로그램 종류 : 컴파일 방식(C, C++, Java 등)과 인터프리터 방식(PHP, Python 등) 등

 

인터프리터 방식 CGI 프로그램

웹 서버 <-> Script engine <-> Script 파일

 

서블릿과 서블릿 컨테이너

웹 서버 <-> Servlet Container <-> Servlet 파일

 

Servlet(Server + Applet)

자바에서 웹 애플리케이션을 만드는 기술이다.
자바에서 동적인 웹 페이지를 구현하기 위한 표준이다.

 

ServletContainer

서블릿의 생성부터 소멸까지의 라이프사이클을 관리한다.
웹 서버와 소켓을 만들고 통신하는 과정을 대신 처리한다.(개발자는 비즈니스 로직에만 집중하면 된다.)
서블릿 객체는 싱글톤으로 관리한다.
-> 상태를 유지(stateful)하게 설계하지 않아야 한다.
-> Thread에 safety 하지 않는다.
싱글톤 : 인스턴스 하나만 생성하여 공유하는 방식

 

수강 화면수강 화면
수강 화면

 
HTTP 규약에 맞게 요청을 받아 들이고, 비지니스 로직을 처리하며, 응답을 주는 구조에 대해 배웠다.
직접 구현할 일이 많지 않겠지만, 강사님의 말대로 지식의 깊이가 더욱 깊어지는 느낌을 받았다.
 
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/43z0P6S

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 
#패스트캠퍼스 #포트폴리오 #직장인자기계발 #환급챌린지 #포트폴리오챌린지 #패스트캠퍼스후기 #초격차패키지 #오공완