일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 패캠인강후기
- 패스트캠퍼스후기
- 30개프로젝트로배우는iOS앱개발withSwift초격차패키지Online.
- 패스트캠퍼스
- 코딩교육
- 패캠챌린지
- 패캠
- 코딩자격증
- fastcampus
- 오공완
- 파이썬
- 패캠강의후기
- 직장인인강
- 환급챌린지
- 직장인자기계발
- reactnative강의
- 직장인공부
- 패캠reactnative
- 자바스크립트
- 코딩테스트
- 직정인자기계발
- 자바
- 수강료0원챌린지
- Today
- Total
라티의 작은 일기장
패스트캠퍼스 환급챌린지 7일차 미션 (2월 7일) : 10개 프로젝트로 시작하는 백엔드 웹개발 : 신입 개발자 취업 집중반 강의 후기 본문
패스트캠퍼스 환급챌린지 7일차 미션 (2월 7일) : 10개 프로젝트로 시작하는 백엔드 웹개발 : 신입 개발자 취업 집중반 강의 후기
코드라티 2025. 2. 7. 18:30본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
오늘은 스프링부트를 활용한 웹 어플리케이션 개발 파트의 개요에 해당하는 내용을 학습했다. (웹 어플리케이션의 종류, 어플리케이션 설정)
일단 웹 어플리케이션은 우리가 흔히 알고있는 IT 서비스 회사들이 웹의 형태로 제공하는 서비스의 형태로, 웹 브라우저를 통해 접속할 수 있는 프로그램으로 이해하면 된다.
Client <-> Web Server <-> Web Application Server <-> DB
이런 구조로 데이터가 흐르고, Web Server부터 DB까지의 영역을 Web Back-end라고 부를 수 있다.
Web Sever와 Web Application Server(WAS)의 차이점에 대해서 이전에는 흐릿하게 알고 있었는데, 이번 강의를 통해 명확하게 알 수 있었다.
일단 Web Server는 브라우저에서 특정 도메인 주소로 리소스 요청을 했을때, HTML, 에셋 등 정적인 컨텐츠를 클라이언트에 응답으로 내려주는 역할을 하는 서버이다. (Nginx 등)
그리고 WAS는 DB 조회나 불러온 정보를 토대로 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 서버이다. (Apache, Tomcat). Computing Instance가 필요한 서버라고 할 수 있다. 그래서 WAS는 Web Server의 기능도 이론적으로는 전부 수행할 수 있다. 그렇다면 굳이 Web Server를 따로 두는 이유는 뭘까?
크게 두 가지 이유가 있다. 하나는 역할을 분리해서 WAS의 서버 부하를 감소시키기 위함이 있고, WAS는 Web Server에 비해 상대적으로 더 장애가 빈번히 일어나기 때문에, 장애 상황에서 유저들이 이를 모르게하거나 반대로 인지할 수 있도록 Web Server에서 정적인 웹이 WAS의 상황에 맞게 다른 페이지를 내려주거나 에러 페이지로 내려주는 등의 처리를 할 수 있게 되는 것.
웹 어플리케이션의 종류에는 서블릿과 JSP가 있고, 서블릿은 웹페이지를 아예 동적으로 생성하는 프로그램, JSP는 HTML에 자바 코드를 직접 삽입해서 동적인 데이터를 처리 또는 조회해서 값으로 표시하는 등의 역할을 수행하는 Template Engine에 가까운 것 같다.
서블릿의 동작 흐름에 대해 조금 더 자세히 알아보면 다음과 같다.
- 클라이언트가 URL로 접속해서 HTTP Request가 발생하면 Servlet Container로 이동
- Servlet Container는 HttpServletRequest, HttpServletResponse 객체 생성
- 요청받은 URL이 어떤 Servlet에 연결되는지 탐색
- 해당 Servlet에서 service()를 호출하고 GET, POST 여부에 따라 doGet() 이나 doPost() 호출
- doGet() 또는 doPost() 메소드는 동적 페이지를 생성하고 HttpServletResponse 객체에 이를 할당
- 응답이 클라이언트로 전달되면 HttpServletRequest / HttpServletResponse 객체를 소멸 (destroy()가 자동으로 호출)
Next.js에서 API를 작성할 수 있는 Route Handler 기능의 사용 흐름과 매우 비슷하다고 느꼈다.
다음으로는 IntelliJ에서 스프링부트 프로젝트를 시작하는 방법들을 알아보았다.
빌드 툴은 보통 Gradle을 활용하게 되고, 초기 의존성으로는 Lombok, Spring Web을 선택하게 된다.
Gradle은 프론트 개발자 입장에서 궁금한 대상 중 하나였는데, 처음에는 의존성 관리도구인 줄 알았다.
하지만 Gradle은 그것보다는 조금 더 다양한 역할을 담당하고 있는, Groovy라는 언어를 기반으로 만들어진 빌드 자동화 툴이라고 할 수 있다. 특징으로는 Gradle Wrapper를 활용해 Gradle이 설치되지 않은 시스템에서도 Gradle로 프로젝트를 빌드할 수 있다는 점이 있다.
Maven 기반의 중앙 저장소를 지원해서 라이브러리를 설치할 필요 없이 그대로 가져다 사용할 수 있다고 한다. (그럼 프로젝트가 너무 무겁지 않나..?) build.gradle에서 빌드와 관련된 설정을 관리하고, settings.gradle에서 프로젝트 설정을 관리한다.(Multi Module Project를 구성할 때도 settings.gradle을 활용한다)
학습 시작 인증
학습 종료 인증
첫 번째 클립 수강 인증
두 번째 클립 수강 인증
학습 인증