Journey to CS/웹 6

JSP 실행 매커니즘

1. filename_jsp.java 형식의 파일filename_jsp.java는 JSP 파일이 실행되기 위해 서블릿(Servlet) 소스 코드로 변환된 결과물이다.우리가 작성하는 .jsp 파일은 HTML 태그와 Java 코드가 섞여 있는 형태다.하지만 웹 서버(정확히는 WAS)는 JSP 파일 그 자체를 직접 실행할 능력이 없다.서버는 오직 컴파일된 자바 클래스 파일(.class)만 실행할 수 있다.따라서 내부적으로 JSP를 자바 소스 파일로 변환하는 과정을 거치는데, 이때 생성되는 것이 바로 서블릿 파일이다.2. JSP의 실행 메커니즘 (Lifycycle)사용자가 브라우저에서 filename.jsp를 호출하면 서버 내부에서는 다음과 같은 일이 벌어진다.변환(Translation): 톰캣 등의 WAS가 ..

Journey to CS/웹 2026.03.26

Jenkins와 Kubernetes를 조합한 CI/CD 파이프라인

1. Jenkins의 작동 메커니즘과 생태계Jenkins는 다양한 외부 서비스들을 하나로 묶어주는 오케스트레이터(Orchestrator) 역할을 수행한다.젠킨스의 전체적인 CI/CD 흐름은 다음과 같다. SCM(Source Code Management) 연동: 젠킨스 파이프라인에서 SCM은 자동화의 트리거(Trigger) 역할을 한다. Webhook을 통해 코드 변경을 실시간으로 감지하고 작업 공간(Workspace)으로 소스를 가져온다.(Checkout)CI(지속적 통합): 빌드 도구와 테스트 프레임워크를 통해 코드 품질을 검증하고 실행 가능한 아티팩트*를 생성한다.CD(지속적 배포): 생성된 아티팩트를 레지스트리에 저장하고 최종 목적지인 서버나 클러스터에 배포한다.💡아티팩트(artifact)란?소스..

Journey to CS/웹 2026.01.24

Spring Boot와 NestJS를 비교해보자

이번 포스팅에서는 백엔드 개발 생태계의 두 프레임워크, 자바 진영의 스프링부트와 노드(Node.js) 진영의 NestJS의 구조적 차이를 알아보고, 각각의 네트워크 처리 방식과 보안적 관점을 알아본다. 1. 언어 및 런타임 환경우선 사용하는 언어와 실행 기반부터 차이가 있다.Spring Boot: Java(or Kotlin)를 기반으로 하며 JVM(Java Virtual Machine) 위에서 동작한다. 강력한 정적 타입 시스템과 객체 지향 프로그래밍(OOP)을 강제하여 대규모 프로젝트의 유지보수성과 안정성을 보장한다.NestJS: TypeScript를 기반으로 Node.js 런타임 위에서 동작한다. 자바스크립트의 유연함에 타입의 안정성을 더했으며, 프론트엔드(React, Vue 등)와 언어를 통일할 ..

Journey to CS/웹 2026.01.10

리눅스 환경에서 Node.js/Express로 웹 서버 구동하기

가상화 기술과 클라우드 환경이 보편화되면서 웹 애플리케이션의 구조는 거대한 모놀리식(Monolithic) 형태에서 가볍고 유연한 마이크로서비스 형태(MSA)로 변화하고 있다.특히 Docker 컨테이너나 Kubernetes Pod 환경에서는 애플리케이션이 얼마나 '가볍게' 구동될 수 있는지가 관건이다.이러한 트렌드 속에서 기존의 Apache/Nginx와 Tomcat 조합보다 훨씬 경량화된 Node.js와 Express.js가 백엔드 개발의 핵심 도구로 자리 잡았다.리눅스(Ubuntu) 환경에서 Node.js 개발 환경을 구축하고, 버전 호환성 문제를 해결하며 간단한 웹 서버를 띄우는 과정을 단계별로 정리한다.1. 환경 구축: NVM을 이용한 Node.js 설치리눅스 시스템의 패키지 매니저(apt)를 통해 ..

Journey to CS/웹 2026.01.08

[Spring Boot] Spring Initializr로 프로젝트 시작하기 (+인텔리제이 환경설정)

Spring Initializr를 이용한 프로젝트 생성 방법과 IntelliJ에서 발생할 수 있는 주요 오류 해결 방법 정리1단계: Spring Initializr 설정 (start.spring.io)먼저 Spring Initializr 사이트에서 프로젝트의 뼈대를 만든다. [설정 예시]Project: Gradle - GroovyLanguage: JavaSpring Boot: SNAPSHOT이나 M1이 붙지 않은 최신 정식 버전 (예: 4.0.x, 3.4.x 등)Project Metadata: Group, Artifact 이름 설정Packaging: JarJava: 17 (현재 가장 많이 쓰이는 LTS 버전)💡 중요: 여기서 Java 17을 골랐다면, 이후의 모든 IntelliJ 설정도 17로 통일해야..

Journey to CS/웹 2026.01.03

[개발 용어] Repaint와 Reflow 쉽게 이해하기

프론트엔드 개발을 하게되면 repaint와 reflow 라는 말을 자주 듣게 될 것이다. 브라우저의 렌더링 과정과 관련이 있다. repaint와 reflow를 이해하려면 먼저 브라우저가 어떻게 페이지를 그려서 보여주는지 알아야 한다. 우리가 HTML과 CSS로 작성한 코드는 '렌더링(Rendering)'이라는 과정을 거쳐 화면에 나타난다. HTML(DOM)과 CSS(CSSOM) 코드를 기반으로 브라우저 엔진이 Render Tree를 형성하고, 이 과정에서 reflow와 repaint가 발생한다. 자바스크립트로 DOM을 조작하거나 CSS를 동적으로 변경할 때 이 두 현상이 트리거된다.웹 브라우저의 렌더링 엔진(Rendering Engine)이 화면을 그리는 과정DOM과 CSSOM 생성: 웹 브라우저의 렌더..

Journey to CS/웹 2025.03.20