해당 글은 전문가가 작성한게 아니라 개인이 생성형AI와 인터넷 검색, 실제 그렇게 작동되는지 검수하는 과정을 기록하는 내용이다. 따라서 보증되지 않은 한 때의 상황으로 받아들여주면 좋겠다.
의존성의 경우는 intelliJ Ultimate 이용기간이 끝나서 편하게 확인할 방법이 없어졌다. 현재 Community 버전 사용중.
1. 기존애 배운 구조에 대해 재 탐색
먼저 내가 웹 개발을 배우면서 가볍게 넘어갔던 의존성에 대해서 알아보려고 한다.
그리고 실제로 웹 개발 및 배포에 대해서 어떻게 진행해야하는지 알아보려고 한다.
2. 웹 개발에서 필요한 기술 스택
1) 프론트엔드(Frontend) : 사용자가 브라우저를 통해 직접 보고 상호작용하는 화면을 만드는 기술
| 기술 스택 이름 | 역할 | 설명 |
| HTML / CSS | 구조 및 디자인 | 웹 페이지의 뼈대(HTML)를 잡고, 색상이나 레이아웃 등 디자인(CSS)을 입힙니다. |
| JavaScript (JS) | 동적 기능 구현 | 버튼 클릭, 데이터 전송 등 웹 페이지가 살아서 움직이게 만드는 프로그래밍 언어입니다. |
| React (또는 Vue, Angular) |
UI 프레임워크 | JS만으로 개발하면 복잡해지는 화면을 '컴포넌트(부품)' 단위로 쪼개어 효율적으로 개발하게 돕습니다. |
| TypeScript | 언어 보조(타입) | JS에 '타입(Type)'을 부여하여 코드 작성 중 발생하는 에러를 획기적으로 줄여주는 도구 |
2) 백엔드(Backend) : 눈에 보이지 안흔 서버 뒤쪽에서 데이터 처리, 로그인, 비즈니스 로직을 담당함.
| 기술 스택 이름 | 역할 | 설명 |
| Java (Spring Boot) |
서버 언어 및 프레임워크 |
한국 취업 시장(특히 대기업/SI)의 표준입니다. 안정성과 확장성이 매우 뛰어납니다. |
| Node.js (Express/NestJS) |
자바스크립트로 서버를 짭니다. 프론트엔드 개발자가 쉽게 접근할 수 있고 생산성이 높습니다. | |
| Python (Django/FastAPI) |
AI나 데이터 분석과 연동하기 쉽고 코드가 간결하여 스타트업에서 많이 사용합니다. |
3) 데이터베이스(Database) : 회원 정보, 게시글 등 데이터를 영구적으로 저장하는 창고입니다.
| 기술 스택 이름 | 역할 | 설명 |
| MySQL MariaDB |
관계형 데이터베이스 (RDBMS) |
데이터를 표(Table) 형식으로 저장합니다. 가장 대중적이고 무료로 사용하기 좋습니다. |
| Oracle DB | 관계형 데이터베이스 | 대규모 데이터 처리에 강력하지만 비쌉니다. 주로 금융권이나 대기업에서 사용합니다. |
| Redis | 인메모리 저장소 | 데이터를 하드디스크가 아닌 메모리에 저장하여 속도가 엄청 빠릅니다. 캐시(임시 저장) 용도로 씁니다. |
4) 배포 및 인프라(Deployment & Infra) : 만들어진 코드를 실제 인터넷상에서 누구나 접속할 수 있게 운영하는 단계
| 기술 스택 이름 | 역할 | 설명 |
| Linux (Ubuntu/Rocky) |
서버 운영체제 | 서버 컴퓨터를 돌리는 OS입니다. 윈도우보다 가볍고 안정적이라 서버용으로 필수입니다. |
| AWS / GCP | 클라우드 서비스 | 내 컴퓨터가 아닌, 아마존이나 구글의 거대한 서버 컴퓨터를 빌려서 사용하는 서비스입니다. |
| Nginx (또는 Apache) |
웹 서버 (리버스 프록시) |
사용자의 요청을 가장 먼저 받아서 백엔드 프로그램으로 연결해 주는 문지기입니다. |
| Docker | 컨테이너 가상화 | 내 컴퓨터 환경을 그대로 포장해서 서버에 옮겨 실행하게 해주는 도구입니다. |
| Git / GitHub | 버전 관리 | 코드의 변경 내역을 저장하고 팀원들과 코드를 공유/협업하는 저장소입니다. |
리버스 프록시 : 클라이언트의 요청을 받아 여러 서버로 전달하고 응답을 받아 클라이언트에게 전달하는 서버.
여기서 내가 사용할 줄 아는 기술스택은
HTML / CSS / JavaScript / Java / MySQL / Linux(Ubuntu) / Docker / git
이다.
클라우드 서비스는 네이버 클라우드 서비스를 잠깐 사용해보긴 했는데, 돈이 계속 나간다는 부담감 때문에 그냥 집에 남아있는 맥을 docker를 이용한 웹서버로 만들려고 생각중이다.
다음으로 알아볼 것은 개발에서 사용하는 의존성이다.
나는 JAVA의 Spring Boot를 이용해서 웹 서비스를 개발했는데 추가했던 의존성은 다음과 같다.
1. 웹 & 화면
| 의존성 이름 | 역할 | 설명 |
| spring-boot-starter-web | 웹 서버 핵심 | **"이 프로젝트는 웹 사이트입니다"**라고 선언하는 것입니다. 내장 웹 서버(Tomcat)를 포함하고 있어 별도 설치 없이 실행 가능하며, REST API나 MVC 패턴을 만들 때 필수입니다. |
| spring-boot-starter-thymeleaf | 템플릿 엔진 | Java 코드에서 가공한 데이터를 HTML 화면에 넣어주는 역할을 합니다. JSP 대신 스프링 부트에서 권장하는 화면 기술입니다. |
| spring-boot-starter-websocket | 실시간 통신 | 채팅이나 실시간 알림처럼, 새로고침 없이 서버와 브라우저가 실시간으로 데이터를 주고받을 수 있게 해줍니다. |
2. 데이터베이스
| 의존성 이름 | 역할 | 설명 |
| mysql-connector-j | DB 드라이버 | 자바 프로그램이 MySQL 데이터베이스와 대화할 수 있게 해주는 통역사입니다. 이게 없으면 DB에 접속조차 할 수 없습니다. (runtimeOnly는 실행할 때만 필요하다는 뜻) |
| spring-boot-starter-jdbc | DB 연결 도구 | DB와 연결하는 파이프(Connection Pool/HikariCP)를 관리합니다. (보통 MyBatis 스타터에 포함되어 있어 생략하기도 하지만, 명시해도 상관없습니다.) |
| mybatis-spring-boot-starter | SQL 매퍼 | SQL(쿼리)을 자바 코드로 편하게 쓸 수 있게 해주는 프레임워크입니다. 복잡한 쿼리를 XML이나 어노테이션으로 관리할 수 있어 한국 실무에서 매우 많이 씁니다. |
3. 개발 편의성 도구
| 의존성 이름 | 역할 | 설명 |
| lombok | 코드 단축기 | Getter, Setter, Constructor 등 매번 작성해야 하는 지루한 코드를 어노테이션(@Data) 하나로 자동 생성해 줍니다. (compileOnly와 annotationProcessor 두 줄이 세트입니다.) |
| spring-boot-devtools | 개발 도구 | 코드를 수정하고 저장하면 서버를 자동으로 재시작해 줍니다. 개발할 때 시간을 엄청나게 아껴줍니다. (developmentOnly는 실제 배포 시에는 빠진다는 뜻) |
4. 테스트
| 의존성 이름 | 역할 | 설명 |
| spring-boot-starter-test | 테스트 종합 세트 | JUnit(테스트 실행), Mockito(가짜 객체 생성), AssertJ(검증) 등 테스트에 필요한 핵심 라이브러리 모음입니다. |
| mybatis-spring-boot-starter-test | DB 테스트 도구 | MyBatis와 관련된 DB 테스트를 할 때, 진짜 DB 대신 메모리 DB를 쓰거나 트랜잭션을 자동으로 롤백해 주는 등 MyBatis 전용 테스트 기능을 제공합니다. |
먼저 이렇게 정리해두고 여기 나온 내용들을 천천히 살피면서 비교 분석하는 공부를 할 예정이다.
'IT 공부내용 정리 > 배포(docker, 젠킨스)' 카테고리의 다른 글
| yml 파일과 properties파일의 차이 (0) | 2025.12.01 |
|---|---|
| 도커를 이용한 웹서비스의 마이크로서비스(MSA) 구현 (0) | 2025.12.01 |
| 리눅스(ubuntu) 도커(docker) 최신 버전 설치 및 기본설정 방법 (0) | 2025.12.01 |
| 배포 및 인프라에 대한 궁금증 정리(Nginx vs Apache) (0) | 2025.12.01 |