| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 오픈챌린지
- 국비지원교육
- JPA
- 백엔드개발자
- 내일배움카드
- UXUI기초정복
- 디자인강의
- 국비지원
- 백준
- Be
- 오블완
- 시스템설계
- 백엔드 부트캠프
- 패스트캠퍼스
- mysql
- 부트캠프
- KDT
- API
- 디자인교육
- Spring
- UXUIPrimary
- 오픈패스
- 디자인챌린지
- 티스토리챌린지
- OPENPATH
- Java
- UXUI챌린지
- 국비지원취업
- 환급챌린지
- baekjoon
- Today
- Total
군만두의 IT 개발 일지
[Spring] WEB 개론과 Spring Boot 기초 정리 - HTTP, REST API, 핵심 특징 본문
목차
📅 진행기간: 2024년 2월 5일 ~ 2024년 9월 20일
⭐ 요약
- 웹 개발의 기본 구성 요소인 프론트엔드, 백엔드, 데이터베이스의 역할을 정리한다.
- 웹의 핵심 개념인 HTTP, URI, HTML과 클라이언트-서버 구조를 학습한다.
- 백엔드 개발에서 필수적으로 알아야 할 HTTP 상태 코드와 HTTP 메서드를 정리한다.
- Spring Boot가 무엇인지, 왜 사용하는지, 핵심 특징은 무엇인지 이해한다.
⭐ 웹 개발의 기본 구성
웹 개발은 인터넷 또는 인트라넷을 통해 사용자와 상호작용하는 웹 사이트나 웹 애플리케이션을 만드는 과정이다. 웹 개발은 크게 아래 세 가지 영역으로 나뉜다.
| 구성 요소 | 설명 | 주요 기술 |
| 프론트엔드 (Frontend) | 사용자가 직접 보고 상호작용하는 화면 영역 | HTML, CSS, JavaScript |
| 백엔드 (Backend) | 서버, 애플리케이션, 데이터베이스가 상호작용하는 영역. 로직 처리와 데이터 관리를 담당 | Java, Spring, Node.js 등 |
| 데이터베이스 (Database) | 데이터를 저장, 검색, 관리하는 영역 | MySQL, PostgreSQL, MongoDB 등 |
⭐ WEB 개론
1. 인터넷과 WWW
인터넷은 수많은 컴퓨터가 서로 연결되어 정보를 주고받는 거대한 네트워크이다. 그 중에서 WWW(World Wide Web)는 인터넷을 통해 사람들이 정보를 공유할 수 있는 전 세계적인 공간이다. 웹 사이트, 사용자 인터페이스, API 웹 서비스 등 다양한 용도로 활용된다.
2. 웹의 구성 요소
| 구성 요소 | 설명 |
| HTTP (HyperText Transfer Protocol) | 웹에서 데이터를 주고받는 기본 프로토콜이다. TCP/IP를 기반으로 하며 REST 아키텍처를 완벽하게 지원한다. |
| URI (Uniform Resource Identifier) | 인터넷에 있는 자원을 식별하는 데 사용되는 주소이다. |
| HTML (HyperText Markup Language) | 웹 페이지를 구성하는 마크업 언어로, 웹 콘텐츠의 구조를 정의한다. |
3. 클라이언트와 서버의 요청/응답 구조
웹은 클라이언트(주로 웹 브라우저)와 서버 간의 상호작용을 기반으로 동작한다. 클라이언트가 서버에 웹 페이지나 데이터를 요청하면 서버는 이 요청에 응답하여 필요한 정보를 제공한다. 이 과정은 HTTP 메서드를 통해 이루어진다.
| HTTP 메서드 | 역할 | 서버 데이터 변경 |
| GET | 서버의 리소스를 조회 | X |
| POST | 서버에 새로운 데이터를 생성 | O |
| PUT | 서버의 데이터를 전체 수정하거나, 없으면 새로 생성 | O |
| PATCH | 서버의 데이터를 일부 수정 | O |
| DELETE | 서버의 데이터를 삭제 | O |
4. HTTP 상태 코드
서버는 클라이언트의 요청을 처리한 결과를 HTTP 상태 코드로 응답한다. 상태 코드는 세 자리 숫자로 구성되며, 첫 번째 자리로 응답의 종류를 파악할 수 있다.
| 코드 | 분류 | 의미 | 대표 예시 |
| 1XX | 정보 응답 | 요청을 받았으며 프로세스가 계속 진행 중 | 100 Continue |
| 2XX | 성공 | 요청이 성공적으로 처리됨 | 200 OK, 201 Created |
| 3XX | 리다이렉션 | 요청 완료를 위해 추가 조치 필요 | 301 Moved Permanently |
| 4XX | 클라이언트 오류 | 잘못된 요청으로 서버가 요청을 수행할 수 없음 | 400 Bad Request, 401 Unauthorized, 404 Not Found |
| 5XX | 서버 오류 | 서버가 유효한 요청을 수행하지 못함 | 500 Internal Server Error |
⭐ Spring Boot 소개
1. Spring Boot란?
Spring Boot는 Spring 프레임워크를 기반으로 하는 Java 플랫폼으로, 웹 애플리케이션 및 마이크로서비스를 빠르고 쉽게 개발할 수 있도록 설계되었다. "컨벤션 오버 컨피규레이션(Convention over Configuration)" 원칙을 따르며, 기존 Spring의 복잡한 XML 설정을 자동 구성과 스타터 의존성으로 대체한다.
쉽게 말하면, 기존 Spring 프레임워크는 설정에 많은 시간을 써야 했지만 Spring Boot는 설정보다 개발에 집중할 수 있도록 기본 설정을 자동으로 처리해준다.
2. Spring Boot의 특징
| 특징 | 설명 |
| 자동 설정 (Auto Configuration) | 클래스패스 설정과 빈 설정 등을 자동으로 처리한다. 개발자가 직접 설정하지 않아도 기본 동작이 가능하다. |
| 독립 실행 가능 (Standalone) | 내장 서블릿 컨테이너(Tomcat, Jetty 등)를 포함하므로 별도의 외부 웹 서버 설치 없이 애플리케이션을 바로 실행할 수 있다. |
| 의존성 관리 (Starter Dependencies) | 스타터 의존성을 통해 필요한 라이브러리를 한 번에 가져올 수 있다. 버전 호환성도 Spring Boot가 자동으로 관리한다. |
| 내장 서버 제공 | Tomcat이 기본 내장되어 있어 .jar 파일 하나로 서버를 실행할 수 있다. |
| 운영 편의 기능 (Actuator) | 애플리케이션의 상태, 메트릭 등을 모니터링할 수 있는 기능을 제공한다. |
3. Spring vs Spring Boot 비교
| 항목 | Spring Framework | Spring Boot |
| 설정 방식 | XML 또는 Java 설정 파일을 직접 작성해야 함 | 자동 설정으로 대부분 생략 가능 |
| 서버 실행 | 외부 WAS(Tomcat 등) 별도 설치 필요 | 내장 서버 포함으로 바로 실행 가능 |
| 의존성 관리 | 각 라이브러리 버전을 직접 관리 | 스타터 의존성으로 자동 관리 |
| 초기 구성 비용 | 높음 | 낮음 |
4. Spring Boot 프로젝트 기본 구조
Spring Boot 프로젝트를 생성하면 아래와 같은 기본 구조로 구성된다.
src/
├── main/
│ ├── java/
│ │ └── com.example.demo/
│ │ ├── DemoApplication.java # 진입점 (main 메서드)
│ │ ├── controller/ # HTTP 요청을 받아 처리
│ │ ├── service/ # 비즈니스 로직 처리
│ │ └── repository/ # DB와 연동
│ └── resources/
│ ├── application.yml # 환경 설정 파일
│ └── static/ # 정적 파일
└── test/ # 테스트 코드
진입점인 DemoApplication.java에는 아래와 같이 @SpringBootApplication 어노테이션이 붙어있다. 이 어노테이션 하나가 자동 설정, 컴포넌트 스캔, 설정 파일 등록을 모두 처리한다.
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
⭐ 후기
- 웹 개발의 구성 요소를 프론트엔드, 백엔드, 데이터베이스로 명확하게 나누어 이해하고 나니 백엔드 개발자로서 어떤 부분을 담당하는지 명확해졌다.
- 기존 Spring 프레임워크와 Spring Boot의 차이를 직접 비교해보면서, Spring Boot가 설정 비용을 줄여 개발에 집중할 수 있도록 도와준다는 것을 이해했다.
⭐ 참고자료
1) Spring 공식 문서, "Spring Boot Reference Documentation", https://docs.spring.io/spring-boot/docs/current/reference/html/
2) MDN Web Docs, "HTTP 상태 코드", https://developer.mozilla.org/ko/docs/Web/HTTP/Status
이 글은 패스트캠퍼스의 백엔드 개발 캠프에서 공부한 내용을 작성한 것입니다.
'개발일지 > 패스트캠퍼스' 카테고리의 다른 글
| [Spring] ObjectMapper를 활용한 직렬화, 역직렬화 (0) | 2024.04.15 |
|---|---|
| [Spring] REST API란? - 개념, 설계 원칙, URI 규칙 (0) | 2024.04.12 |
| 패스트캠퍼스 8기 백엔드 개발 부트캠프 멘토님 특강 - GitHub Actions와 CI/CD 개념 및 실습 (0) | 2024.04.08 |
| [Java] JSON 라이브러리 사용 방법 및 성능 비교 (1) | 2024.04.07 |
| [Java] 패스트캠퍼스 백엔드 개발 부트캠프 8기 토이 프로젝트 1 DAY5 (0) | 2024.04.05 |