<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[JSCODE - 최상위 현업 개발자들의 프로그래밍 교육]]></title>
        <description><![CDATA[IT 서비스 기업 취준생을 위한 1:1 프로그래밍 과외 / 온라인 강의]]></description>
        <link>https://www.jscode.kr</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Thu, 03 Sep 2026 05:49:13 GMT</lastBuildDate>
        <atom:link href="https://www.jscode.kr/feed.xml" rel="self" type="application/rss+xml"/>
        <language><![CDATA[ko]]></language>
        <item>
            <title><![CDATA[[실습] 외부 MCP Server와 연동한 실시간 날씨 조회 - MCP Server 개발]]></title>
            <description><![CDATA[✅ 1. application.yaml 추가 application.yaml app:
  chat:
    default-system-prompt: 한국어를 사용하는 tool 지원 AI 입니다. # 기본 system prompt
  etl:
    pi]]></description>
            <link>https://www.jscode.kr/blog/practice-mcp-server-development-for-weather-service</link>
            <guid isPermaLink="false">practice-mcp-server-development-for-weather-service</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Tool Calling VS MCP]]></title>
            <description><![CDATA[✅ 1. Tool Calling 정의 : LLM이 사용자의 질문을 분석한 뒤, "지금은 일반적인 대답을 할 게 아니라 getWeather라는 외부 함수를 실행해야겠다!"라고 판단하여 함수 이름과 파라미터를 JSON 형태로 뱉어내는 '능력' 그 자체 한]]></description>
            <link>https://www.jscode.kr/blog/ai-integration-comparison-tool-calling-vs-mcp</link>
            <guid isPermaLink="false">ai-integration-comparison-tool-calling-vs-mcp</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] MCP Client 개발 환경 구축]]></title>
            <description><![CDATA[✅ 1. 의존성  추가 implementation("org.springframework.ai:spring-ai-starter-mcp-client:2.0.0-M6")
compileOnly 'org.projectlombok:lombok'
annotatio]]></description>
            <link>https://www.jscode.kr/blog/practice-mcp-client-environment-setup</link>
            <guid isPermaLink="false">practice-mcp-client-environment-setup</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MCP란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. MCP란 무엇일까? MCP는 Model Context Protocol의 약자 AI 모델이 외부 도구(Tools)나 데이터 리소스와 상호작용할 때 사용하는 구조적인 표준 통신 규약(프로토콜) 이러한 연결을 할 때 필요한 표준! 그것이 바로 MC]]></description>
            <link>https://www.jscode.kr/blog/introduction-to-mcp-model-context-protocol</link>
            <guid isPermaLink="false">introduction-to-mcp-model-context-protocol</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 아키텍처 미리보기]]></title>
            <description><![CDATA[✅ 1. 아키텍처 미리보기]]></description>
            <link>https://www.jscode.kr/blog/mcp-architecture-deep-dive-preview</link>
            <guid isPermaLink="false">mcp-architecture-deep-dive-preview</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] MCP Server 개발 환경 구축]]></title>
            <description><![CDATA[✅ 1. 프로젝트 생성 Name : mcp-server Language : Java Type : Gradle-Groovy Group : com.jscode Artifact : mcp-server Java : 21 Packaging : Jar ✅ 2. ]]></description>
            <link>https://www.jscode.kr/blog/practice-mcp-server-environment-setup</link>
            <guid isPermaLink="false">practice-mcp-server-environment-setup</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 외부 MCP Server와 연동한 실시간 날씨 조회 - MCP 연동]]></title>
            <description><![CDATA[✅ 1. 빌드하기 ./gradlew bootJar ✅ 2. application.yaml 수정 application.yaml spring:
  application:
    name: tool  # 애플리케이션 이름
    ai:
    mcp:
  ]]></description>
            <link>https://www.jscode.kr/blog/practice-integrating-mcp-client-and-server</link>
            <guid isPermaLink="false">practice-integrating-mcp-client-and-server</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] CLI 및 RestAPI 테스트]]></title>
            <description><![CDATA[✅ 1. CLI 설정 기존의 CommandLineRunner 활용 ✅ 2. McpController McpController.java package com.jscode.tool.rest;

@RestController
@RequestMapping("/]]></description>
            <link>https://www.jscode.kr/blog/practice-testing-mcp-integration-cli-and-rest-api</link>
            <guid isPermaLink="false">practice-testing-mcp-integration-cli-and-rest-api</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 외부 MCP Server와 연동한 실시간 날씨 조회 - MCP Client 개발]]></title>
            <description><![CDATA[✅ 1. 파이썬 설치 및 mcp_weather_server 설치 파이썬이 설치되지 않으신 분들은 파이썬을 설치하고 진행해주시길 바랍니다. pip3 install mcp
pip3 install mcp_weather_server
python -m mcp_]]></description>
            <link>https://www.jscode.kr/blog/practice-mcp-client-development-for-weather-service</link>
            <guid isPermaLink="false">practice-mcp-client-development-for-weather-service</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ToolChatConfig, ToolController 구현 - CLI, REST API]]></title>
            <description><![CDATA[✅ 1. CLI ToolChatConfig.java package com.jscode.tool;

@Configuration
public class ToolChatConfig {

  @Bean
  public SimpleLoggerAdvisor si]]></description>
            <link>https://www.jscode.kr/blog/practice-tool-chat-config-and-controller-setup</link>
            <guid isPermaLink="false">practice-tool-chat-config-and-controller-setup</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Tool Calling 개발 환경 구축]]></title>
            <description><![CDATA[✅ 1. 프로젝트 생성 Name : tool Language : Java Type : Gradle-Groovy Group : com.jscode Artifact : tool Java : 21 Packaging : Jar 인텔리제이에서 제공하는 메뉴에서]]></description>
            <link>https://www.jscode.kr/blog/practice-tool-calling-environment-setup</link>
            <guid isPermaLink="false">practice-tool-calling-environment-setup</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ToolCallingManager 설정]]></title>
            <description><![CDATA[✅ 1. Tool Config 설정 이유 AI 모델은 그저 텍스트와 JSON을 만들어내는 도구일 뿐, 우리 서버 안에 있는 자바 메서드(getWeather 등)를 직접 실행할 물리적인 능력은 없음 그래서 중간에서 누군가 AI와 자바 코드를 연결해주는 ]]></description>
            <link>https://www.jscode.kr/blog/practice-configuring-tool-calling-manager</link>
            <guid isPermaLink="false">practice-configuring-tool-calling-manager</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Tool Service 구현]]></title>
            <description><![CDATA[✅ 1. Tool Service 구현 ToolService.java package com.jscode.tool.service;

@Service
public class ToolService {

  private final ChatClient chat]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-tool-service</link>
            <guid isPermaLink="false">practice-implementing-tool-service</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 지역별 날씨 조회 외부 API Tool 구현]]></title>
            <description><![CDATA[✅ 1. 지역별 날씨 조회 외부 API Tool 구현 Tools.java package com.jscode.tool;
@Service
public class Tools {

  private final RestClient restClient;
    ]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-weather-api-as-spring-ai-tool</link>
            <guid isPermaLink="false">practice-implementing-weather-api-as-spring-ai-tool</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] CLI 및 REST API 테스트]]></title>
            <description><![CDATA[✅ 1. CLI 테스트 경고(Warning) 로그는 우리가 콘솔 로그를 전부 다 제외했기 때문에 뜨는 경고(Warning)이니 무시하셔도 됩니다! 신경 쓰이시는 분들은 logback config 파일을 작성해서 수정해 보셔도 좋습니다! ✅ 2. Res]]></description>
            <link>https://www.jscode.kr/blog/practice-testing-tool-calling-cli-and-rest-api</link>
            <guid isPermaLink="false">practice-testing-tool-calling-cli-and-rest-api</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Tool Calling과 작동 프로세스]]></title>
            <description><![CDATA[✅ 1. Spring AI Tool Calling이란 무엇일까? Tool Calling(또는 Function Calling)은 AI 모델이 외부 시스템(DB, API, 사내 시스템)과 직접 상호작용할 수 있도록 권한을 부여하는 기능 주요 용도 개발자의]]></description>
            <link>https://www.jscode.kr/blog/spring-ai-tool-calling-and-workflow</link>
            <guid isPermaLink="false">spring-ai-tool-calling-and-workflow</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RAG Service 구현]]></title>
            <description><![CDATA[✅ 1. RAG Service 구현 RagChatService.java public RagChatService(ChatClient.Builder chatClientBuilder, Advisor[] advisors) {
    this.chatClien]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-rag-service</link>
            <guid isPermaLink="false">practice-implementing-rag-service</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[LLM 한계 극복을 위한 RAG 도입]]></title>
            <description><![CDATA[✅ 1. LLM의 한계 LLM은 뛰어난 문장 생성 능력을 갖추고 있지만, 실무에 바로 적용하기에는 두 가지 치명적인 단점이 있음 사실 기반 정확성의 부족: 모르는 것도 아는 것처럼 꾸며내는 '환각 현상(Hallucination)'이 발생 문맥 인식 및]]></description>
            <link>https://www.jscode.kr/blog/why-we-need-rag-to-overcome-llm-limitations</link>
            <guid isPermaLink="false">why-we-need-rag-to-overcome-llm-limitations</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker 설치]]></title>
            <description><![CDATA[✅ 1. Docker 설치 윈도우 사용자 맥 사용자 ✅ 2. 체크 사항 2023년 7월부터 Docker Compose V1의 업데이트를 중단했다. 따라서 Docker Compose는 V2를 설치할 것을 권장한다. 혹시나 기존에 설치되어 있는 Docke]]></description>
            <link>https://www.jscode.kr/blog/installing-docker-for-rag-environment</link>
            <guid isPermaLink="false">installing-docker-for-rag-environment</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[고품질 RAG를 위한 데이터 전처리 - Extract, Transform, Load]]></title>
            <description><![CDATA[✅ 1. ETL 파이프라인이란? RAG(검색 증강 생성) 시스템의 성능은 결국 'Vector DB에 얼마나 깨끗하고 잘 정돈된 데이터가 들어있는가'에 달려 있음 아무리 뛰어난 LLM과 고급 Advisor를 사용하더라도, 원본 데이터가 엉망이면 AI는 ]]></description>
            <link>https://www.jscode.kr/blog/rag-data-preprocessing-etl-pipeline</link>
            <guid isPermaLink="false">rag-data-preprocessing-etl-pipeline</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ElasticSearch 기반 VectorStore로 변경하기]]></title>
            <description><![CDATA[✅ 1. application.yaml 수정 app:
  rag:
    documents-location-pattern: classpath:spring-ai-llm.pdf
  etl:
    pipeline:
     init: true
  cli:]]></description>
            <link>https://www.jscode.kr/blog/practice-switching-vector-store-to-elasticsearch</link>
            <guid isPermaLink="false">practice-switching-vector-store-to-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RAG CLI 구현 및 실행 테스트]]></title>
            <description><![CDATA[✅ 1. application.yaml 수정 app:
  rag:
    documents-location-pattern: classpath:spring-ai-llm.pdf
  cli:
    enabled: true ✅ 2. chatConfig 수정]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-and-testing-rag-cli</link>
            <guid isPermaLink="false">practice-implementing-and-testing-rag-cli</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[실무에서 Spring AI를 통한 RAG 구현 방법]]></title>
            <description><![CDATA[✅ 1. Spring AI에서 RAG를 구현하는 방법 Spring AI는 RAG 구현을 위해 프롬프트를 가로채고 조작하는 Advisor패턴을 적극적으로 사용함 실무에서는 목적에 따라 크게 두 가지 Advisor를 선택해서 사용함 ✅ 2. 실무에서 사용]]></description>
            <link>https://www.jscode.kr/blog/how-to-implement-rag-with-spring-ai</link>
            <guid isPermaLink="false">how-to-implement-rag-with-spring-ai</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RAG Advisors 구현]]></title>
            <description><![CDATA[✅ 1. 실무에서 사용하는 두 가지 Advisor QuestionAnswerAdvisor RetrievalAugmentationAdvisor ** ✅ 2. 의존성 추가 implementation("org.springframework.ai:spring-]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-rag-advisors</link>
            <guid isPermaLink="false">practice-implementing-rag-advisors</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RAG REST API 구현 ]]></title>
            <description><![CDATA[✅ 1. Controller 소스 코드 변경 RagChatController.java package com.jscode.chat.controller;

@RestController
@RequestMapping("/rag")
public class Ra]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-rag-rest-api</link>
            <guid isPermaLink="false">practice-implementing-rag-rest-api</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RAG 챗봇 개발을 위한 로컬 환경 구축]]></title>
            <description><![CDATA[✅ 1. 의존성 추가 // vector store
implementation("org.springframework.ai:spring-ai-vector-store:2.0.0-M6")
// tika Reader
implementation("org.spri]]></description>
            <link>https://www.jscode.kr/blog/practice-local-environment-setup-for-rag-chatbot</link>
            <guid isPermaLink="false">practice-local-environment-setup-for-rag-chatbot</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI RAG 기본 설계]]></title>
            <link>https://www.jscode.kr/blog/spring-ai-rag-architecture-design</link>
            <guid isPermaLink="false">spring-ai-rag-architecture-design</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RAG ETL 파이프라인 구현]]></title>
            <description><![CDATA[✅ 1. Extract 구현 application.yaml app:
  rag:
    documents-location-pattern: classpath:spring-ai-llm.pdf RagConfig.java package com.jscode.c]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-rag-etl-pipeline</link>
            <guid isPermaLink="false">practice-implementing-rag-etl-pipeline</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:53:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Vector Store API]]></title>
            <description><![CDATA[✅ 1. Spring AI Vector Store API란? 백엔드 개발을 하다 보면 관계형 DB(RDBMS)로 MySQL을 쓰다가 Oracle로 바꾸면 쿼리와 코드를 대대적으로 수정해야 했던 경험이 있을 것이다. Spring AI Vector Sto]]></description>
            <link>https://www.jscode.kr/blog/spring-ai-vector-store-api-guide</link>
            <guid isPermaLink="false">spring-ai-vector-store-api-guide</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Prompts - 프롬프트 엔지니어링 9가지 패턴]]></title>
            <description><![CDATA[✅ 1. Zero-Shot Prompting (제로샷 프롬프팅) 사전 정보나 예시 없이 AI에게 곧바로 질문을 던지는 가장 기본적인 방식 @AiService
public interface QAService {
    @Prompt("이탈리아의 수도는 ]]></description>
            <link>https://www.jscode.kr/blog/nine-patterns-of-prompt-engineering</link>
            <guid isPermaLink="false">nine-patterns-of-prompt-engineering</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] CLI 챗봇 개발 환경 아키텍처 미리보기]]></title>
            <description><![CDATA[✅ 1. 개발 환경 아키텍처 미리보기]]></description>
            <link>https://www.jscode.kr/blog/architecture-preview-for-cli-chatbot</link>
            <guid isPermaLink="false">architecture-preview-for-cli-chatbot</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Chat Memory Advisor로 메모리 기능 추가하기]]></title>
            <description><![CDATA[✅ 1. Advisors 프로세스 사용자가 입력한 순수한 형태의 질문을 Spring AI 내부에서 처리하고 다루기 쉬운 ChatClientRequest 객체로 변환 이곳에 등록된 여러 Advisor들이 개입하여 요청 데이터를 검사하거나 변경함 Advi]]></description>
            <link>https://www.jscode.kr/blog/practice-adding-memory-with-chat-memory-advisor</link>
            <guid isPermaLink="false">practice-adding-memory-with-chat-memory-advisor</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Chat Controller 구현 - call과 stream 방식의 Chat REST API]]></title>
            <description><![CDATA[✅ 1. call() 메서드 생성 ChatService.java public @Nullable ChatResponse call(Prompt prompt, String conversationId){
  return prepareRequest(prompt]]></description>
            <link>https://www.jscode.kr/blog/practice-chat-controller-call-vs-stream</link>
            <guid isPermaLink="false">practice-chat-controller-call-vs-stream</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Structured Output Converter를 통한 쇼핑몰 CS 문의 긴급도 분류하기]]></title>
            <description><![CDATA[✅ 1. Structured Output Converter란? AI가 뱉어내는 일반 텍스트(String) 답변을, 우리 백엔드 서버에서 원하는 자바 객체로 자동 변환해주는 번역기 ✅ 2. enum, record 정의 ChatService.java //]]></description>
            <link>https://www.jscode.kr/blog/practice-cs-classification-using-structured-output-converter</link>
            <guid isPermaLink="false">practice-cs-classification-using-structured-output-converter</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Prompts - Chat Options란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Spring AI Prompts란 무엇일까? 흔히 AI에게 질문을 던질 때 하나의 긴 텍스트 문장만 보낸다고 생각하기 쉬움. 하지만 Spring AI에서 AI 모델로 전달되는 최종 형태는 문자열이 아니라 Prompt라는 전용 객체임 Promp]]></description>
            <link>https://www.jscode.kr/blog/understanding-spring-ai-chat-options</link>
            <guid isPermaLink="false">understanding-spring-ai-chat-options</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Metadata Filters란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Metadata Filters란 무엇일까? Vector DB에서 유사도 검색을 할 때, 단순히 의미(벡터)만 비슷한 문서를 찾는 것이 아니라 
우리가 원하는 특정 조건(메타데이터)에 맞는 문서들 속에서만 유사도를 검색하도록 대상을 좁혀주는 기]]></description>
            <link>https://www.jscode.kr/blog/understanding-metadata-filters-in-vector-store</link>
            <guid isPermaLink="false">understanding-metadata-filters-in-vector-store</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에서 CLI 기능 구현 및 테스트하기]]></title>
            <description><![CDATA[✅ 1. Spring Boot에서 CLI 기능 구현하기 package com.jscode.chat;

@Configuration
public class CliConfig {
    @ConditionalOnProperty(prefix = "spring]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-cli-in-spring-boot</link>
            <guid isPermaLink="false">practice-implementing-cli-in-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Vector Database Cosine Similarity란 무엇일까? / Spring AI의 Similarity Score]]></title>
            <description><![CDATA[✅ 1. Similarity란 무엇일까? AI가 텍스트를 숫자로 된 좌표(Vector)로 바꿨다면, 이제 "어떤 단어들이 서로 비슷한 의미를 가질까?"를 수학적으로 계산할 수 있게 됨 이것이 바로 유사도(Similarity)임 ✅ 2. 두 벡터 사이의]]></description>
            <link>https://www.jscode.kr/blog/cosine-similarity-and-spring-ai-similarity-score</link>
            <guid isPermaLink="false">cosine-similarity-and-spring-ai-similarity-score</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Chat Service 구현 - Advisor, CONVERSATION_ID]]></title>
            <description><![CDATA[✅ 1. ChatService 구현 이전 시간에 구현한 Advisor들을 Chat Service에 등록하기  ChatService.java package com.jscode.chat.service;

@Service
public class ChatSe]]></description>
            <link>https://www.jscode.kr/blog/practice-implementing-chat-service-with-conversation-id</link>
            <guid isPermaLink="false">practice-implementing-chat-service-with-conversation-id</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Vector Database란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Vector Database란 무엇일까? 과거의 백엔드 개발은 텍스트, 숫자 데이터를 관계형 DB에 저장하는 것이 전부였음 하지만, AI 시대가 오면서 데이터를 저장하고 검색하는 패러다임 자체가 완전히 바뀜 그 중심에 있는 것이 바로 Vect]]></description>
            <link>https://www.jscode.kr/blog/introduction-to-vector-databases</link>
            <guid isPermaLink="false">introduction-to-vector-databases</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] OpenAI API를 활용한 채팅 API 환경 구축]]></title>
            <description><![CDATA[✅ 1. build.gradle 수정 dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-webmvc'
//	implementation 'org.springframe]]></description>
            <link>https://www.jscode.kr/blog/practice-building-chat-api-with-openai</link>
            <guid isPermaLink="false">practice-building-chat-api-with-openai</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Streaming으로 Flux 형태로 응답받기]]></title>
            <description><![CDATA[✅ 1. Streaming으로 Flux 형태로 응답 받기 ChatController.java @GetMapping(value = "/st",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public @Nullable]]></description>
            <link>https://www.jscode.kr/blog/practice-streaming-responses-with-webflux-flux</link>
            <guid isPermaLink="false">practice-streaming-responses-with-webflux-flux</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Ollama를 활용한 채팅 API 환경 구축]]></title>
            <description><![CDATA[✅ 1. build.gradle 수정 dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-webmvc'
	implementation 'org.springframewo]]></description>
            <link>https://www.jscode.kr/blog/practice-building-chat-api-with-local-ollama</link>
            <guid isPermaLink="false">practice-building-chat-api-with-local-ollama</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI ChatClient란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Spring AI ChatClient란 무엇일까? Spring AI 생태계에서 AI 모델(ChatGPT, Claude 등)과 대화를 주고받는 모든 과정을 총괄하고 제어하는 최상위 핵심 인터페이스 기존의 단순한 API 호출 방식은 질문을 던지고]]></description>
            <link>https://www.jscode.kr/blog/understanding-spring-ai-chat-client</link>
            <guid isPermaLink="false">understanding-spring-ai-chat-client</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Swagger UI를 활용한 테스트 - Ollama]]></title>
            <description><![CDATA[✅ 1. 테스트 반드시 Try it out 버튼을 클릭하여 테스트 진행 userPrompt 입력 예: Spring AI에 대해서 설명해주세요. 답변이 잘 나오는지 확인한다. Ollama를 활용한 실습에서는 로컬 모델의 특성상 OpenAI 모델보다 답변]]></description>
            <link>https://www.jscode.kr/blog/practice-testing-ollama-api-via-swagger</link>
            <guid isPermaLink="false">practice-testing-ollama-api-via-swagger</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[핵심 컴포넌트 - ChatClient, Advisors, Prompts, Models, Structured Output]]></title>
            <description><![CDATA[ChatClient 내부에는 유저의 질문이 AI를 거쳐 최종 결과물로 나오기까지 각각의 역할을 수행하는 5가지의 핵심 컴포넌트가 유기적으로 연결되어 있음. 어떤 컴포넌트가 있는지 살펴보자  ✅ 1. ChatClient 진입점 AI 대화의 시작과 끝을 ]]></description>
            <link>https://www.jscode.kr/blog/core-components-of-spring-ai</link>
            <guid isPermaLink="false">core-components-of-spring-ai</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Models이란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Spring AI Models이란 무엇일까? OpenAI(ChatGPT), Google(Gemini), Anthropic(Claude) 등 다양한 외부 AI 서비스와 통신하기 위한 자바 표준 인터페이스 해당 인터페이스가 없다면, 특정 회사의 ]]></description>
            <link>https://www.jscode.kr/blog/understanding-spring-ai-models-api</link>
            <guid isPermaLink="false">understanding-spring-ai-models-api</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Structured Output이란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Spring AI Structured Output이란 무엇일까? AI 모델이 뱉어내는 예측 불가능한 문자열(String) 형태의 답변을, 백엔드 서버가 즉시 사용할 수 있는 정형화된 데이터 규격(JSON, 자바 객체, 리스트 등)으로 강제하고]]></description>
            <link>https://www.jscode.kr/blog/understanding-spring-ai-structured-output</link>
            <guid isPermaLink="false">understanding-spring-ai-structured-output</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] OpenAI API Key 발급받기]]></title>
            <description><![CDATA[✅ 1-1. OpenAI API Key 발급받기(유료) 현재 OpenAI API는 예전의 후불제에서 '선불 충전식(Credit)'으로 결제 시스템이 바뀜 카드 등록 후 최소 5달러 정도의 금액을 충전해야 함 해외 결제가 가능한 카드가 필수임! ✅ 1-]]></description>
            <link>https://www.jscode.kr/blog/practice-how-to-get-openai-api-key</link>
            <guid isPermaLink="false">practice-how-to-get-openai-api-key</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Ollama 설치하기 / Hugging Face란 무엇일까? / GGUF]]></title>
            <description><![CDATA[✅ 1. Ollama 설치하기 각 운영체제에 맞는 Ollama 설치하기 버전에 따라 다르지만, Ollama에서 제공하는 LLM 모델을 사용하기 위해서는 1.5GB 메모리가 필요하니 참고할 것 ✅ 2. Ollma가 제공하는 모델 ✅ 3. Hugging ]]></description>
            <link>https://www.jscode.kr/blog/installing-ollama-and-understanding-gguf</link>
            <guid isPermaLink="false">installing-ollama-and-understanding-gguf</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Swagger UI를 활용한 테스트 - OpenAI API]]></title>
            <description><![CDATA[✅ 1. Swagger UI란 무엇일까? Swagger UI는 RESTful API를 문서화하고 시각화하는 오픈소스 도구 Swagger UI를 사용하면 API 사용자가 API를 쉽게 이해하고 사용할 수 있도록 API의 엔드포인트, 매개변수, 요청 및 ]]></description>
            <link>https://www.jscode.kr/blog/practice-testing-openai-api-via-swagger</link>
            <guid isPermaLink="false">practice-testing-openai-api-via-swagger</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Prompts란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Spring AI Prompts란 무엇일까? 흔히 AI에게 질문을 던질 때 하나의 긴 텍스트 문장만 보낸다고 생각하기 쉬움. 하지만 Spring AI에서 AI Model로 전달되는 최종 형태는 문자열이 아니라 Prompt 라는 전용 객체임. ]]></description>
            <link>https://www.jscode.kr/blog/understanding-spring-ai-prompts</link>
            <guid isPermaLink="false">understanding-spring-ai-prompts</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI 응답의 형태 - ChatClient Responses]]></title>
            <description><![CDATA[우리가 AI에게 질문을 던진 후, AI의 대답을 어떤 형태로 꺼내서 쓰는 것이 좋을까?
이전까지는 .content() 를 통해 단순한 텍스트로 받았지만, 프론트엔드에 바로 내려주기 위해 JSON 형태의 자바 객체로 받아야 하는 상황이 생길 수도 있다.]]></description>
            <link>https://www.jscode.kr/blog/understanding-chat-client-responses</link>
            <guid isPermaLink="false">understanding-chat-client-responses</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI Advisor란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Spring AI Advisor의 정의 AI 모델과 주고받는 요청과 응답을 중간에서 가로채 데이터를 동적으로 수정, 확장, 차단할 수 있게 해주는 컴포넌트 스프링 웹 개발의 인터셉터, 필터, 정통 AOP와 동일한 역할을 수행함 ✅ 2. Adv]]></description>
            <link>https://www.jscode.kr/blog/understanding-spring-ai-advisor</link>
            <guid isPermaLink="false">understanding-spring-ai-advisor</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring AI 로컬 환경 설정 - Spring Boot 4.x, Gradle]]></title>
            <description><![CDATA[✅ 1. Spring Initializr 프로젝트 생성 Project : Gradle-Groovy Language : Java Spring Boot : 4.X Group : com.jscode Artifact : chat Package name : c]]></description>
            <link>https://www.jscode.kr/blog/practice-spring-ai-local-environment-setup</link>
            <guid isPermaLink="false">practice-spring-ai-local-environment-setup</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI와 LangChain - 어떤 도구를 선택해야 할까?]]></title>
            <description><![CDATA[✅ 1. LangChain과 Spring AI 개요 LangChain Spring AI ✅ 2. 차이점 LangChain Spring AI ✅ 3. 어떤 도구를 선택해야 할까? LangChain Spring AI]]></description>
            <link>https://www.jscode.kr/blog/spring-ai-vs-langchain-comparison</link>
            <guid isPermaLink="false">spring-ai-vs-langchain-comparison</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI와 LangChain - Chat Model 쉽게 이해하기]]></title>
            <description><![CDATA[✅ 1. 대화(Chat) 방식의 차이 LangChain Spring AI 음식 주문시 각각의 아이템을 장바구니에 각각 담아 한번에 결제하는 것과 비슷함 장점 : 매우 직관적이며 가독성이 뛰어남 단점 : 파이썬의 간결한 스크립트 방식에 비해 코드가 조금]]></description>
            <link>https://www.jscode.kr/blog/spring-ai-chat-model-vs-langchain</link>
            <guid isPermaLink="false">spring-ai-chat-model-vs-langchain</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI 1.0 GA의 탄생]]></title>
            <description><![CDATA[✅ 1. Spring AI 1.0 GA의 탄생 2023년 하반기(최초 공개) 2024년 ~ 2025년 초 2025년 5월 20일 ✅ 2. 1.0 GA 출시가 자바 생태계에 가지는 의미 파이썬 독점 탈피 글로벌 IT 대기업과의 협업 이 외에도, Advi]]></description>
            <link>https://www.jscode.kr/blog/birth-of-spring-ai-1-0-ga</link>
            <guid isPermaLink="false">birth-of-spring-ai-1-0-ga</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI란 무엇일까? /  백엔드 개발자가 왜 Spring AI를 배워야할까?]]></title>
            <description><![CDATA[✅ 1. Spring AI란 무엇일까?
 자바, 스프링 개발자가 ChatGPT, Claude, Gemini 같은 AI 모델들을 스프링을 활용하여 다룰 수 있도록 돕는 스프링 공식 프레임워크 일반적으로 AI 기능 구현을 위해 파이썬을 사용하는 경우가 많]]></description>
            <link>https://www.jscode.kr/blog/why-backend-developers-should-learn-spring-ai</link>
            <guid isPermaLink="false">why-backend-developers-should-learn-spring-ai</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring AI와 LangChain - VectorStore 인터페이스]]></title>
            <description><![CDATA[✅ 1. VectorStore 인터페이스 LangChain과 Spring AI 모두 Vector DB를 제어하기 위해 VectorStore라는 인터페이스를 사용함 ✅ 2. 차이점 LangChain LangChain의 경우 Provider마다 지원하는 ]]></description>
            <link>https://www.jscode.kr/blog/spring-ai-vector-store-interface-vs-langchain</link>
            <guid isPermaLink="false">spring-ai-vector-store-interface-vs-langchain</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Embeddings란 무엇일까? / Semantic Space]]></title>
            <description><![CDATA[✅ 1. Embeddings란 무엇일까?
 텍스트, 이미지, 비디오 등 사람이 사용하는 데이터를 AI가 계산할 수 있도록 수많은 숫자들의 배열(Vector)로 변환한 표현 방식 컴퓨터는 '사과'나 '바나나'라는 단어의 진짜 의미를 모름. 단지 문자로 ]]></description>
            <link>https://www.jscode.kr/blog/understanding-embeddings-and-semantic-space</link>
            <guid isPermaLink="false">understanding-embeddings-and-semantic-space</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Fine Tuning이란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Fine Tuning이란 무엇일까? 이미 학습된 기존 AI 모델의 내부 가중치(두뇌의 신경망 연결 상태)를 직접 조작하여, 우리가 원하는 특정 데이터나 목적에 딱 맞게 개조하는 전통적인 머신러닝 기법 사내의 전문 지식이나 특유의 말투를 집중적]]></description>
            <link>https://www.jscode.kr/blog/what-is-llm-fine-tuning</link>
            <guid isPermaLink="false">what-is-llm-fine-tuning</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AI Model Providers란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. AI Model Providers란 무엇일까? 앞서 배운 거대하고 똑똑한 '사전 훈련(Pre-trained) 모델'을 일반 개발자나 기업이 가져다 쓸 수 있도록 인프라와 접근 통로를 제공해 주는 기업 또는 플랫폼 ✅ 2. API 기반 클라우드]]></description>
            <link>https://www.jscode.kr/blog/overview-of-ai-model-providers</link>
            <guid isPermaLink="false">overview-of-ai-model-providers</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Prompt란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Prompt란 무엇일까? AI 모델이 사용자가 원하는 특정한 출력(결과물)을 생성하도록 유도하는 모든 입력값 작업 지시서라고 생각하면 됨. ✅ 2. Prompt의 구조와 역할 AI와 대화할 때 우리는 단순히 하나의 텍스트만 보내는 것 같지만,]]></description>
            <link>https://www.jscode.kr/blog/what-is-llm-prompt</link>
            <guid isPermaLink="false">what-is-llm-prompt</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Tokens란 무엇일까? / ]]></title>
            <description><![CDATA[✅ 1. Tokens란 무엇일까? AI 모델이 사람의 언어(입력)를 읽고, 답변(출력)을 만들어낼 때 사용하는 가장 작은 데이터 처리 단위 사람은 글을 읽을 때 '단어'나 '문장' 단위로 의미를 이해하지만, AI는 텍스트를 일정한 길이의 조각(토큰)으]]></description>
            <link>https://www.jscode.kr/blog/llm-tokens-and-context-window</link>
            <guid isPermaLink="false">llm-tokens-and-context-window</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AI Models란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. AI Models란 무엇일까? AI Models의 개념은 ‘정보를 처리하고 새로운 결과물을 생성하도록 설계된 거대한 수학적 알고리즘’ 임 쉽게 말해 '인간의 뇌(인지 기능)를 모방한 디지털 두뇌' 사람이 눈으로 보고(입력), 머릿속으로 생각한]]></description>
            <link>https://www.jscode.kr/blog/understanding-ai-models</link>
            <guid isPermaLink="false">understanding-ai-models</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RAG란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. RAG란 무엇일까? AI 모델이 한 번도 배운 적 없는 최신 정보나 사내 데이터를, 질문(프롬프트) 속에 함께 끼워 넣어서(통합하여) 정확한 답변을 만들어내는 기술 ✅ 2. RAG의 핵심 원리 RAG가 동작하는 가장 핵심적인 메커니즘이 바로 ]]></description>
            <link>https://www.jscode.kr/blog/introduction-to-rag-retrieval-augmented-generation</link>
            <guid isPermaLink="false">introduction-to-rag-retrieval-augmented-generation</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 00:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker 이미지 태그 변경하기]]></title>
            <description><![CDATA[✅ 1. Docker 이미지 태그 변경하기 도커 이미지를 새로 생성하고 업로드할 때마다 태그를 변경하는 것이 일반적이다. 우리가 생성한 도커 이미지도 변경될 때마다 태그를 변경해보자 pipeline {
     // 전역 에이전트를 사용하지 않음으로써]]></description>
            <link>https://www.jscode.kr/blog/tagging-docker-images-for-ecr-jenkins</link>
            <guid isPermaLink="false">tagging-docker-images-for-ecr-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ECS 서비스 업데이트하기]]></title>
            <description><![CDATA[✅ 1. ECS 서비스 업데이트 하기 ECS의 서비스를 업데이트 하기 위해서는 다음의 명령어를 통해 조작할 수 있다. 해당 예시를 참고하여 명령문을 작성해보자 stage('Deploy to AWS') {
            agent {
      ]]></description>
            <link>https://www.jscode.kr/blog/updating-ecs-service-for-deployment-jenkins</link>
            <guid isPermaLink="false">updating-ecs-service-for-deployment-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] 비용 나가지 않게 ECS, ECR, Netlify 종료하기]]></title>
            <description><![CDATA[✅ 비용 나가지 않게 ECS, ECR 종료하기 ECR 리포지토리 삭제하기 ECS 클러스터 삭제하기 Netlify 프로젝트 삭제하기]]></description>
            <link>https://www.jscode.kr/blog/jenkins-clean-up-ecs-ecr-netlify-to-save-costs-jenkins</link>
            <guid isPermaLink="false">jenkins-clean-up-ecs-ecr-netlify-to-save-costs-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS CLI로 S3 파일 동기화하기]]></title>
            <description><![CDATA[✅ 1. AWS CLI로 S3 파일 동기화 하기 우리는 현재 index.html 파일만을 S3에 업로드하고 있지만, 실제로는 빌드의 결과물인 build 폴더를 S3에 업로드해야 배포를 진행할 수 있다. 배포를 진행할 때마다, 버킷을 비워야 하고 새로운]]></description>
            <link>https://www.jscode.kr/blog/syncing-s3-files-using-aws-cli</link>
            <guid isPermaLink="false">syncing-s3-files-using-aws-cli</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS 대기 명령 services-stable]]></title>
            <description><![CDATA[✅ 1. AWS 대기 명령을 사용해야 하는 이유 우리가 실제로 Jenkins 파일을 빌드해보면 몇초 이내에 서비스가 update 되는 것을 확인할 수 있다. 하지만, 실제로 AWS에서는 서비스를 update 한 이후에 실제 프로젝트가 안정적으로 배포되]]></description>
            <link>https://www.jscode.kr/blog/using-aws-ecs-wait-services-stable-jenkins</link>
            <guid isPermaLink="false">using-aws-ecs-wait-services-stable-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] S3 버킷 생성하기]]></title>
            <description><![CDATA[✅ S3에서만 사용하는 용어 정리 S3에서는 버킷(Bucket)과 객체(Object)라는 용어를 사용한다. 이 용어에 대해 알아보자. 버킷(Bucket)이란?
⇒ 깃헙(Github)을 보면 여러 개의 Repository를 만들 수 있다. S3에서도 여]]></description>
            <link>https://www.jscode.kr/blog/creating-aws-s3-bucket-for-storage</link>
            <guid isPermaLink="false">creating-aws-s3-bucket-for-storage</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker 이미지 생성하기]]></title>
            <description><![CDATA[✅ 1. Docker 이미지 빌드하기 Dockerfile FROM nginx:1.27-alpine
COPY build /usr/share/nginx/html stages {

  stage('Build') {
      agent {
         ]]></description>
            <link>https://www.jscode.kr/blog/creating-docker-images-for-ecs-jenkins</link>
            <guid isPermaLink="false">creating-docker-images-for-ecs-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins에 AWS 자격증명 추가하기 / AWS CLI 환경 변수 구성]]></title>
            <description><![CDATA[✅ 1. Jenkins에 AWS 자격 증명 추가하기 Username : IAM에서 발급받은 액세스 키 Password : IAM에서 발급받은 비밀 액세스 키 ID : my-aws로 설정 ✅ 2. AWS CLI 환경 변수 구성 방금 등록한 자격 증명을 ]]></description>
            <link>https://www.jscode.kr/blog/adding-aws-credentials-to-jenkins</link>
            <guid isPermaLink="false">adding-aws-credentials-to-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins를 활용하여 S3에 파일 업로드하기 / 버킷명 환경 변수로 등록하기]]></title>
            <description><![CDATA[✅ 1. Jenkins를 활용하여 S3에 파일 업로드하기 해당 문서의 Example을 활용하여 Jenkins로 S3에 파일 업로드를 진행해보자. stage('AWS') {
    agent {
        docker { 
            im]]></description>
            <link>https://www.jscode.kr/blog/uploading-files-to-s3-via-jenkins</link>
            <guid isPermaLink="false">uploading-files-to-s3-via-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS CLI를 사용하는 이유 / AWS CLI 설치방법]]></title>
            <description><![CDATA[✅ 1. AWS CLI를 사용하는 이유 우리는 AWS 클라우드 안에 S3 버킷을 생성했다. 
그렇다면 Jenkins를 활용해서 방금 생성한 S3 버킷에 파일을 업로드할 수 있을까?

바로 CLI(Command Line Interface)를 사용해야 한]]></description>
            <link>https://www.jscode.kr/blog/why-use-aws-cli-and-installation</link>
            <guid isPermaLink="false">why-use-aws-cli-and-installation</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ECS에 수동으로 배포하기]]></title>
            <description><![CDATA[✅ 1. ECS에 수동으로 테스크 정의 업데이트하기 테스크 정의에서 테스크를 선택 후 새 계정 생성을 클릭한다. 테스크 실행 역할의 값을 기본 역할 생성으로 변경한다. 이미지 URI를 우리 ECR의 URI 주소로 변경하고 생성 버튼을 클릭한다. 클러스]]></description>
            <link>https://www.jscode.kr/blog/manual-deployment-to-aws-ecs-jenkins</link>
            <guid isPermaLink="false">manual-deployment-to-aws-ecs-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins와 S3를 활용한 정적 웹사이트 호스팅하기]]></title>
            <description><![CDATA[✅ 1. 정적 웹사이트 호스팅 활성화하기 생성한 버킷을 클릭하고 속성 탭을 찾아 클릭한다. 스크롤을 아래로 내려 정적 사이트 웹 호스팅을 확인해보면, 정적 웹사이트 호스팅이 비활성화된 것을 확인할 수 있다. 우리는 이번 파트에서 Jenkins를 활용하]]></description>
            <link>https://www.jscode.kr/blog/static-website-hosting-with-jenkins-and-s3</link>
            <guid isPermaLink="false">static-website-hosting-with-jenkins-and-s3</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ECR이란 무엇일까? / 비공개 리포지토리 생성하기]]></title>
            <description><![CDATA[✅ 1.  ECR이란 무엇일까? ECR은 Elastic Container Registry의 약자이다. ECR은 쉽게 말해서 AWS가 운영하는 비공개 도커 이미지 저장소라고 생각하면 된다. ✅ 2. 비공개 리포지토리 생성하기 ECR 서비스로 접속한다. ]]></description>
            <link>https://www.jscode.kr/blog/what-is-aws-ecr-private-repository-jenkins</link>
            <guid isPermaLink="false">what-is-aws-ecr-private-repository-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] 비용 나가지 않게 S3 깔끔하게 종료하기]]></title>
            <description><![CDATA[✅ 비용 나가지 않게 S3 깔끔하게 종료하기 버킷 안에 있는 객체 전부 삭제하기 버킷 삭제하기]]></description>
            <link>https://www.jscode.kr/blog/cleaning-up-s3-to-avoid-aws-costs-jenkins</link>
            <guid isPermaLink="false">cleaning-up-s3-to-avoid-aws-costs-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 새로운 버전의 Docker 컨테이너 배포하기]]></title>
            <description><![CDATA[✅ 1. 새로운 버전의 Docker 컨테이너 배포하기 만약 사용하던 Docker 이미지의 버전이 업데이트되어 새로운 버전의 Docker 컨테이너를 배포해야 한다면 어떻게 하면 될까? 우리가 작성한 task-definition-prod.json 파일을 ]]></description>
            <link>https://www.jscode.kr/blog/deploying-new-version-docker-container-jenkins</link>
            <guid isPermaLink="false">deploying-new-version-docker-container-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] S3란? / S3를 왜 사용하는걸까? / 현업에서 S3를 많이 사용할까?]]></title>
            <description><![CDATA[✅ S3란? 한 줄 요약 : 파일 저장 서비스이다. 우린 사진이나 동영상과 같은 파일들을 구글 드라이브나 iCloud에 저장한다. S3는 이런 종류의 서비스라고 생각하면 된다. ✅ S3를 왜 사용하는 걸까? 백엔드 서버를 구현하다보면 이미지 업로드 기]]></description>
            <link>https://www.jscode.kr/blog/what-is-aws-s3-jenkins-supplement</link>
            <guid isPermaLink="false">what-is-aws-s3-jenkins-supplement</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ECS란 무엇일까? / ECS의 구성 요소]]></title>
            <description><![CDATA[✅ 1. ECS란 무엇일까? ECS는 Elastic Container Service의 약자이다. Docker 컨테이너를 쉽고 빠르게 실행, 중단 및 관리할 수 있게 해주는 서비스라고 생각하면 된다. ✅ 2. ECS의 구성요소 Cluster Task D]]></description>
            <link>https://www.jscode.kr/blog/understanding-aws-ecs-and-components-jenkins</link>
            <guid isPermaLink="false">understanding-aws-ecs-and-components-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ECS 클러스터 생성하기]]></title>
            <description><![CDATA[✅ 1. ECS 클러스터 생성하기 클러스터의 이름은 자동으로 생성되는 이름을 사용해도 무방하다. 인프라 - 고급탭에서 반드시 Fargate 전용을 선택하도록 한다. 해당 모드는 서버를 생성하거나 관리할 필요가 없는 초심자에게 적합한 모드이다.]]></description>
            <link>https://www.jscode.kr/blog/creating-aws-ecs-cluster</link>
            <guid isPermaLink="false">creating-aws-ecs-cluster</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] AWS 계정 생성]]></title>
            <description><![CDATA[1. AWS 계정 생성 본 강의에서는 AWS를 활용한 CD에 대해서 학습하게 됩니다. 따라서 AWS 계정 생성이 되지 않은 분들은 강의를 듣기 전 해당 링크를 참고하셔서 AWS 계정 생성을 진행해 주시길 바랍니다. 
추가적으로, 프리티어(Free Ti]]></description>
            <link>https://www.jscode.kr/blog/creating-aws-account-for-jenkins-practice</link>
            <guid isPermaLink="false">creating-aws-account-for-jenkins-practice</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Nginx 기반 ECS 테스크 정의 생성하기]]></title>
            <description><![CDATA[✅ 1. ECS 테스크 정의 생성하기 우리는 테스트를 위해 Nginx 도커 이미지를 기반으로 실습을 진행해 볼 것이다. 해당 사이트에 들어가 도커 이미지 버전을 확인한다. Nginx 이미지를 해당 버전과 꼭 동일한 버전을 사용하지 않아도 무방하나, 버]]></description>
            <link>https://www.jscode.kr/blog/defining-nginx-task-on-ecs-jenkins</link>
            <guid isPermaLink="false">defining-nginx-task-on-ecs-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ECS 배포 아키텍처 그림으로 이해해보기]]></title>
            <description><![CDATA[✅ 1. ECS 배포 아키텍처]]></description>
            <link>https://www.jscode.kr/blog/understanding-ecs-deployment-architecture-jenkins</link>
            <guid isPermaLink="false">understanding-ecs-deployment-architecture-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ECS 보안 그룹, 인바운드 규칙 설정하기]]></title>
            <description><![CDATA[✅ 1. ECS 보안 그룹, 인바운드 규칙 설정하기 네트워킹 탭에서 보안 그룹을 클릭한다. 인바운드 규칙 편집 버튼을 클릭한다. 유형 : HTTP 소스 : Anywhere-IPV4 추가 후에 규칙 저장 버튼을 클릭한다. 해당 화면이 나타난다면, Ngi]]></description>
            <link>https://www.jscode.kr/blog/configuring-ecs-security-groups-and-inbound-rules-jenkins</link>
            <guid isPermaLink="false">configuring-ecs-security-groups-and-inbound-rules-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] sed 명령어를 이용한 텍스트 치환 /  ECS에 자동으로 배포하기]]></title>
            <description><![CDATA[✅ 1. sed 명령어를 이용한 텍스트 치환 "image": "614388036068.dkr.ecr.ap-northeast-2.amazonaws.com/myjenkinsapp:1.0.72 우리는 현재 도커 이미지의 태그명을 버전마다 다르게 하고 있기 ]]></description>
            <link>https://www.jscode.kr/blog/automating-ecs-deployment-with-sed-command-jenkins</link>
            <guid isPermaLink="false">automating-ecs-deployment-with-sed-command-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS CLI로 S3 버킷 목록 가져오기]]></title>
            <description><![CDATA[✅ 1. AWS CLI로 S3 버킷 목록 가져오기 AWS CLI에 익숙하지 않더라도 해당 문서를 확인하면 명령어의 구조를 파악할 수 있다. ls 명령어는 일반적으로 리눅스에서도 list의 줄임말로 현재 위치나 특정 경로의 디렉터리 내용의 목록을 출력하]]></description>
            <link>https://www.jscode.kr/blog/listing-s3-buckets-using-aws-cli</link>
            <guid isPermaLink="false">listing-s3-buckets-using-aws-cli</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] IAM 에서 권한 부여하기]]></title>
            <description><![CDATA[✅ 1. IAM에서 권한 부여 하기 사용자 목록 중 우리가 계속 사용하고 있는 사용자인 jenkins를 선택한다. 권한 정책에서 권한 추가 버튼을 클릭한다. 권한 정책에 ECS를 입력하고 AmazonECS_FullAccess 를 선택하여 권한을 추가한]]></description>
            <link>https://www.jscode.kr/blog/granting-iam-permissions-for-ecs-jenkins</link>
            <guid isPermaLink="false">granting-iam-permissions-for-ecs-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] IAM에서 액세스 키 발급받기]]></title>
            <description><![CDATA[✅ 목표 기본적으로 AWS의 리소스에 아무나 접근을 못하게 막아놨기 때문에 S3에 접근해서 파일을 업로드 하거나 리스트 목록을 불러올 수가 없다. 하지만 우리는 Jenkins 에서 S3에 접근해서 파일을 업로드하거나 목록을 불러올 수 있어야 한다. S]]></description>
            <link>https://www.jscode.kr/blog/generating-aws-iam-access-keys-jenkins</link>
            <guid isPermaLink="false">generating-aws-iam-access-keys-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 프로젝트 코드 고도화하기 / JSON 프로세서 jq]]></title>
            <description><![CDATA[✅ 1. 프로젝트 코드 고도화 하기 우리가 현재 작성한 코드는 생각보다 하드 코딩된 것이 많고 동적으로 작동하지 않는다. aws ecs update-service --cluster 클러스터명 --service 서비스명 --task-definition ]]></description>
            <link>https://www.jscode.kr/blog/enhancing-project-code-with-jq-jenkins</link>
            <guid isPermaLink="false">enhancing-project-code-with-jq-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] 크론(Cron) 표기법 가이드]]></title>
            <description><![CDATA[크론 표기법은 배치 프로그램이나 스케줄러를 실행할 때, "언제 실행할지"를 컴퓨터에게 알려주는 시간 표기법이다. 스프링(Spring)에서는 리눅스 표준(5자리)과 달리 초(Second)가 포함된 6자리 형식을 사용한다. ✅ 1. 필드 구성 (순서 중요]]></description>
            <link>https://www.jscode.kr/blog/jenkins-cron-expression-syntax-guide</link>
            <guid isPermaLink="false">jenkins-cron-expression-syntax-guide</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] Netlify 계정 생성하기]]></title>
            <description><![CDATA[✅ 1. Netlify 계정 생성하기 실습을 위하여 netlify 계정 생성이 필요합니다. 각자 편한 방식으로 netlify 계정을 생성한 후 로그인하여 실습 진행해 주세요!]]></description>
            <link>https://www.jscode.kr/blog/creating-netlify-account-for-jenkins-cd</link>
            <guid isPermaLink="false">creating-netlify-account-for-jenkins-cd</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Playwright 테스트 보고서 HTML로 발행하기]]></title>
            <description><![CDATA[ ✅ 1. Playwright 보고서 HTML로 발행하기 stage('E2E') {
    steps {
        sh '''
		        npm install serve
            node_modules/.bin/serve -s]]></description>
            <link>https://www.jscode.kr/blog/publishing-playwright-html-reports</link>
            <guid isPermaLink="false">publishing-playwright-html-reports</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DevOps란 무엇일까?]]></title>
            <description><![CDATA[ ✅ 1. DevOps는 무엇일까? 표준이나 사양이 아님 소프트웨어가 아님 DevOps는 사고방식의 변화 즉, 문화이다. ✅ 2. 기존 방식의 문제점 새로운 기능을 원하는 고객이 있음 프로젝트 관리자는 고객이 원하는 것을 파악하고 몇 가지 사양을 작성]]></description>
            <link>https://www.jscode.kr/blog/understanding-devops-and-jenkins-role</link>
            <guid isPermaLink="false">understanding-devops-and-jenkins-role</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Playwright를 활용한 E2E 테스트]]></title>
            <description><![CDATA[✅ 1. E2E(End-to-End) 테스트란? E2E는 "끝에서 끝까지"라는 뜻 사용자의 관점에서 애플리케이션의 전체 흐름을 처음부터 끝까지 검증하는 테스트 실제 브라우저를 띄우고 사용자가 하는 행동(로그인 클릭, 상품 검색, 결제 등)을 그대로 시]]></description>
            <link>https://www.jscode.kr/blog/e2e-testing-with-playwright-and-jenkins</link>
            <guid isPermaLink="false">e2e-testing-with-playwright-and-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Build Trigger로 주기적으로 자동 빌드하기]]></title>
            <description><![CDATA[지금까지는 우리가 직접 빌드하기 버튼을 클릭하여 빌드를 진행했다.

하지만, 우리가 궁극적으로 원하는 것은 자동 빌드이다. 
주기적으로 배포를 한다거나, Git에 변화가 생겼을 때 배포를 하는것과 같이 자동으로 빌드 및 배포를 하려면 어떻게 해야 할까]]></description>
            <link>https://www.jscode.kr/blog/scheduling-builds-with-jenkins-triggers</link>
            <guid isPermaLink="false">scheduling-builds-with-jenkins-triggers</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins와 Git Repository 연결하기]]></title>
            <description><![CDATA[✅ 1. Jenkins 파일 생성하기 Jenkinsfile pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                echo 'H]]></description>
            <link>https://www.jscode.kr/blog/connecting-jenkins-to-git-repository</link>
            <guid isPermaLink="false">connecting-jenkins-to-git-repository</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[퀴즈] 기존 프로젝트에 Approval 스탭 추가하기]]></title>
            <description><![CDATA[퀴즈 파트는 스스로 실습을 통해 배운 것을 테스트 하는 단계입니다. 
반드시 스스로 실습을 진행해보시고 정답을 열어주세요! ✅ 1. 단계별 실습 과제 1단계 2단계 3단계 4단계 ✅ 2. 정답 확인(반드시 실습을 꼭 진행하고 확인할 것!!) 1단계 2]]></description>
            <link>https://www.jscode.kr/blog/quiz-adding-approval-step-to-existing-project</link>
            <guid isPermaLink="false">quiz-adding-approval-step-to-existing-project</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Netlify 수동 배포 및 Netlify CLI 설치하기]]></title>
            <description><![CDATA[✅ 1. 프로젝트 다운로드 강의 자료에 있는 build.zip 파일을 다운로드 하고 압축을 해제한다. ✅ 2. netlify에 수동으로 배포하기 Or browse to upload 버튼을 클릭하고, 압축 해제한 build 폴더를 선택한다. 해당 버튼을]]></description>
            <link>https://www.jscode.kr/blog/netlify-manual-deployment-and-cli-setup</link>
            <guid isPermaLink="false">netlify-manual-deployment-and-cli-setup</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 프로덕션 환경 배포 전 배포 Approval 스텝 추가하기]]></title>
            <description><![CDATA[조금 더 안전한 배포를 위해, 스테이징 배포 이후 관리자의 승인 이후에 프로덕션 환경에 배포되게끔 하면 어떨까?

Jenkins에서 제공하는 기능을 통해 구현해보자. ✅ 1. 새로운 파이프라인 생성하기 pipeline {
    agent any

 ]]></description>
            <link>https://www.jscode.kr/blog/adding-manual-approval-step-for-production</link>
            <guid isPermaLink="false">adding-manual-approval-step-for-production</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 배포를 테스트하기 위한 스테이징 환경 구축]]></title>
            <description><![CDATA[우리는 방금 배포 후 테스트를 자동화하는 방법에 대해 배웠다. 그러나 배포가 엉뚱하게 되더라도 사용자는 엉뚱한 화면을 보는 것은 피할 수 없다.

그렇다면, 배포를 하기 전에 배포를 테스트할 수 있는 방법은 없을까? ✅ 1. 스테이징 환경을 구축하는 ]]></description>
            <link>https://www.jscode.kr/blog/setting-up-staging-environment-for-deployment</link>
            <guid isPermaLink="false">setting-up-staging-environment-for-deployment</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CI란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. CI란 무엇일까? CI는 Continuous Integration의 약자 즉, 지속적인 통합을 의미한다. 쉽게 설명하자면, 여러 명의 개발자가 각자 수정한 코드를 하나의 공유 저장소에 수시로 합치고, 그 코드가 제대로 작동하는지 자동으로 확인]]></description>
            <link>https://www.jscode.kr/blog/what-is-continuous-integration-ci</link>
            <guid isPermaLink="false">what-is-continuous-integration-ci</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Pipeline 프로젝트에서 자격증명 추가하여 실제 배포하기]]></title>
            <description><![CDATA[✅ 1. 프로젝트에서 자격 증명 사용하기 pipeline {
    agent {
        docker {
            image 'mcr.microsoft.com/playwright:v1.39.0-jammy'
            re]]></description>
            <link>https://www.jscode.kr/blog/deploying-pipeline-project-with-credentials</link>
            <guid isPermaLink="false">deploying-pipeline-project-with-credentials</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Node 프로젝트 준비하기]]></title>
            <description><![CDATA[✅ 1. Node 프로젝트 준비하기 해당 프로젝트를 Clone 또는 Fork 하여 로컬에 복사한다. 해당 파일은 개인이 편한 IDE로 열어도 무방하나, 강의에서는 Codespace를 이용한다. 개인 IDE 툴을 활용하는 경우 반드시 Node를 설치 후]]></description>
            <link>https://www.jscode.kr/blog/preparing-node-js-project-for-jenkins</link>
            <guid isPermaLink="false">preparing-node-js-project-for-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker를 사용하여 Jenkins에서 빌드해보기]]></title>
            <description><![CDATA[Jenkins를 통한 CI/CD를 구축하기 위해서는 이전 실습에서 진행했던 npm install, npm start와 같은 구문을 Jenkins에서 실행해야 한다. 어떻게 수행하면 될까?
단순 pipeline script를 작성하여 수행하면 될까? 
]]></description>
            <link>https://www.jscode.kr/blog/building-projects-with-docker-in-jenkins</link>
            <guid isPermaLink="false">building-projects-with-docker-in-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[퀴즈] Jenkins로 Test 단계 추가하기]]></title>
            <description><![CDATA[퀴즈 파트는 스스로 실습을 통해 배운 것을 테스트하는 단계입니다. 
반드시 스스로 실습을 진행해보시고 정답을 열어주세요! ✅ 1. Node 프로젝트 테스트하기 일반적으로 Node의 프로젝트를 테스트할 때는 npm test라는 명령어를 사용한다. 해당 ]]></description>
            <link>https://www.jscode.kr/blog/quiz-adding-test-stage-to-jenkins</link>
            <guid isPermaLink="false">quiz-adding-test-stage-to-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins에서 JUnit 테스트 보고서 게시하기]]></title>
            <description><![CDATA[✅ 1. JUnit 테스트 보고서란 무엇일까? 일반적으로 JUnit 보고서는 Java 프로젝트에서 JUnit 테스트 프레임워크에 의해 생성된 파일을 의미한다. 일반적으로는 XML 형식을 사용하여 보고서를 생성한다. 이 보고서는 테스트의 합격, 불합격,]]></description>
            <link>https://www.jscode.kr/blog/publishing-junit-test-reports-on-jenkins</link>
            <guid isPermaLink="false">publishing-junit-test-reports-on-jenkins</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Netlify 환경 변수 추가하고 Token 발급하기]]></title>
            <description><![CDATA[✅ 1. 환경 변수 추가하기 우리가 Netlify에 10개의 프로젝트 배포를 진행 중이라고 할 때, 몇번 프로젝트에 배포하겠다 라는 것을 어떻게 정할 수 있을까? 바로 환경변수 추가를 통하여 설정할 수 있다. Netlify에 접속하여 배포된 프로젝트의]]></description>
            <link>https://www.jscode.kr/blog/configuring-netlify-environment-variables-token</link>
            <guid isPermaLink="false">configuring-netlify-environment-variables-token</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 배포 이후 테스트 자동화 구축하기]]></title>
            <description><![CDATA[우리가 프로젝트 배포를 하고 난 이후에는 해당 사이트에 접속하여 정상적으로 웹사이트가 구동되는지를 브라우저를 열어 직접 수동으로 확인해야 한다.

하지만 이러한 테스트 과정까지도 자동화할 수 있다면 어떨까? 
이번 파트에서는 테스트 자동화를 구축하는 ]]></description>
            <link>https://www.jscode.kr/blog/post-deployment-test-automation</link>
            <guid isPermaLink="false">post-deployment-test-automation</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CD란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. CD란 무엇일까? CD는 Continuous Delivery(지속적 제공) 또는 Continuous Deployment(지속적 배포)의 약자 즉 지속적인 배포(반영)를 의미한다. 쉽게 설명하자면, CI 과정을 거쳐 안전하게 에러 없이 합쳐진 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-continuous-deployment-cd</link>
            <guid isPermaLink="false">what-is-continuous-deployment-cd</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkinsfile로 Build 구현하기]]></title>
            <description><![CDATA[✅ 1. 프로젝트 Build 하기 npm run build 일반적으로 Node로 만들어진 프로젝트는 해당 명령어를 사용하여 build 작업을 진행한다. 해당 명령어를 통해 build를 진행하면 배포를 위한 폴더가 생성된 것을 확인할 수 있음 우리가 해]]></description>
            <link>https://www.jscode.kr/blog/implementing-build-using-jenkinsfile</link>
            <guid isPermaLink="false">implementing-build-using-jenkinsfile</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins 타임존 변경하기]]></title>
            <description><![CDATA[✅ 1. Jenkins 타임존 변경하기
 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Seoul')]]></description>
            <link>https://www.jscode.kr/blog/how-to-change-jenkins-timezone</link>
            <guid isPermaLink="false">how-to-change-jenkins-timezone</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Pipeline Script 작성 / Workspace]]></title>
            <description><![CDATA[✅ 1. Pipeline 이란 무엇일까? 실제 제품을 제조하는 데 사용되는 조립 라인을 생각해보자. 모든 제품은 고객에게 출시되기 전에 일련의 단계를 거치게 된다. 이러한 일련의 과정을 Pipeline이라고 한다. 우리는 소프트웨어를 제작하려 한다. ]]></description>
            <link>https://www.jscode.kr/blog/writing-jenkins-pipeline-script-workspace</link>
            <guid isPermaLink="false">writing-jenkins-pipeline-script-workspace</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Pipeline 프로젝트 생성하기]]></title>
            <description><![CDATA[✅ 1. Pipeline 프로젝트란? Pipeline Project
 ✅ 2. Pipeline 프로젝트 생성하기 ✅ 3. 빌드 및 결과 확인하기 ✅ 4. 파이프라인 스크립트 수정하기 pipeline {
    agent any

    stages {]]></description>
            <link>https://www.jscode.kr/blog/creating-first-pipeline-project</link>
            <guid isPermaLink="false">creating-first-pipeline-project</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Pipeline의 Test Stage 생성하기]]></title>
            <description><![CDATA[✅ 1. Stage란 무엇일까? 전체 워크플로우를 논리적으로 구분하는 작업 단위 코드를 구조화시켜 Pipeline의 흐름을 이해하기 쉽게 도와줌 ✅ 2. Test Stage 추가하기 pipeline {
    agent any

    stages {]]></description>
            <link>https://www.jscode.kr/blog/adding-test-stage-to-pipeline</link>
            <guid isPermaLink="false">adding-test-stage-to-pipeline</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Jenkins Job의 유형 : Freestyle vs Pipeline]]></title>
            <description><![CDATA[✅ 1. Job이란 무엇일까? Jenkins에선 Job(프로젝트)은 Jenkins가 수행해야 할 작업의 기본 단위 소스 코드 가져오기, 소스 컴파일하기 등 Jenkins에게 지시할 일련의 작업 순서와 명세서를 의미함 ✅ 2. Jenkins 잡의 두가지]]></description>
            <link>https://www.jscode.kr/blog/jenkins-job-types-freestyle-vs-pipeline</link>
            <guid isPermaLink="false">jenkins-job-types-freestyle-vs-pipeline</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 빌드 성공 시 결과물 저장하기]]></title>
            <description><![CDATA[✅ 1. 빌드 결과물이 사라지는 이유 pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'make a new bu]]></description>
            <link>https://www.jscode.kr/blog/archiving-artifacts-on-successful-build</link>
            <guid isPermaLink="false">archiving-artifacts-on-successful-build</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Freestyle 프로젝트 생성하기]]></title>
            <description><![CDATA[✅ 1. Freestyle 프로젝트란? Freestyle Project ✅ 2. Freestyle 프로젝트 생성하기 echo "hello jenkins!" ✅ 3. 프로젝트 빌드 및 결과 확인]]></description>
            <link>https://www.jscode.kr/blog/creating-first-freestyle-project</link>
            <guid isPermaLink="false">creating-first-freestyle-project</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Pipeline에서 변수를 정의하는 방법]]></title>
            <description><![CDATA[✅ 1. 변수를 정의하는 이유 pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                cleanWs()
             ]]></description>
            <link>https://www.jscode.kr/blog/defining-variables-in-jenkins-pipeline</link>
            <guid isPermaLink="false">defining-variables-in-jenkins-pipeline</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Pipeline 프로젝트를 실무에서 사용해야 하는 이유]]></title>
            <description><![CDATA[✅ 1. Jenkins의 작업 초기 형태 초기 Jenkins는 Freestyle 작업만 지원했기 때문에 이를 단순히 Job이라고 불렀음 이 작업들은 전적으로 Jenkins의 UI를 활용하여 구성을 만들고 실행하는 방식임 ✅ 2. Freestyle 프로]]></description>
            <link>https://www.jscode.kr/blog/why-use-jenkins-pipeline-in-production</link>
            <guid isPermaLink="false">why-use-jenkins-pipeline-in-production</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins 필수 플러그인 설치]]></title>
            <description><![CDATA[최신 Jenkins 버전에서는 해당 플러그인이 자동으로 설치되지 않아 추가로 설치를 진행합니다. 강의 중 계속 사용하는 플러그인이니 반드시 설치 후 강의를 들어주세요! ✅ 1. Stage View 플러그인 설치 stage view 를 검색하여 설치를 ]]></description>
            <link>https://www.jscode.kr/blog/essential-jenkins-plugins-setup</link>
            <guid isPermaLink="false">essential-jenkins-plugins-setup</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker 설치]]></title>
            <description><![CDATA[✅ 1. Docker 설치 윈도우 사용자 맥 사용자 ✅ 2. 체크 사항 2023년 7월부터 Docker Compose V1의 업데이트를 중단했다. 따라서 Docker Compose는 V2를 설치할 것을 권장한다. 혹시나 기존에 설치되어 있는 Docke]]></description>
            <link>https://www.jscode.kr/blog/installing-docker-for-jenkins-environment</link>
            <guid isPermaLink="false">installing-docker-for-jenkins-environment</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] CI/CD를 왜 배우는 걸까?]]></title>
            <description><![CDATA[✅ CI/CD란? CI/CD란 Continuous Integration, Continuous Deployment라는 의미를 가지고 있다. 말이 너무 어렵다. 쉽게 표현하자면 CI/CD는 테스트(Test), 통합(Merge), 배포(Deploy)의 과정]]></description>
            <link>https://www.jscode.kr/blog/why-we-need-cicd-jenkins-guide</link>
            <guid isPermaLink="false">why-we-need-cicd-jenkins-guide</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Jenkins란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Jenkins란 무엇일까? 소프트웨어 개발 시 지속적 통합(CI)과 지속적 배포(CD)를 구현해주는 대표적인 무료 오픈 소스 자동화 서버 개발자가 코드를 수정하고 저장소에 올리면 이후의 빌드, 테스트, 배포 과정을 자동으로 처리해줌 ✅ 2. ]]></description>
            <link>https://www.jscode.kr/blog/what-is-jenkins-basic-concepts</link>
            <guid isPermaLink="false">what-is-jenkins-basic-concepts</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker를 활용한 Jenkins 설치하기]]></title>
            <description><![CDATA[Jenkins를 설치하는 방법은 여러 가지가 있습니다. 다만, 이 강의에서 보여드리는 모든 예제가 정확히 동일하게 작동하도록 같은 설치법으로 설치하는 것을 권장드립니다! ✅ 1. Docker 설치하기 해당 강의에서는 Docker를 활용하여 Jenkin]]></description>
            <link>https://www.jscode.kr/blog/how-to-install-jenkins-using-docker</link>
            <guid isPermaLink="false">how-to-install-jenkins-using-docker</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 12:54:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Grafana 대시보드 생성하기]]></title>
            <description><![CDATA[✅ 1. 대시보드 생성하기 Dashboard 메뉴 클릭 후 New 버튼을 클릭한다 대시보드 템플릿을 Import 하기 위하여 Import 버튼을 클릭한다 템플릿 번호 19004를 입력 후 Load 버튼을 클릭한다 참고로 어떠한 템플릿을 써도 무방하다.]]></description>
            <link>https://www.jscode.kr/blog/creating-grafana-monitoring-dashboard</link>
            <guid isPermaLink="false">creating-grafana-monitoring-dashboard</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] PromQL 프로메테우스 쿼리 언어 맛보기]]></title>
            <description><![CDATA[✅ 1. PromQL이란? Prometheus Query Language의 약자로 프로메테우스에서 데이터를 꺼낼 때 쓰는 전용 언어이다. ✅ 2. PromQL의 기본 구조 PromQL은 직관적인 것이 특징이다. 무엇을(Metric), 어떤 조건으로(L]]></description>
            <link>https://www.jscode.kr/blog/introduction-to-promql-queries</link>
            <guid isPermaLink="false">introduction-to-promql-queries</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Prometheus 설치 및 메트릭 수집]]></title>
            <description><![CDATA[✅ 1. Prometheus란? Prometheus: Actuator가 노출하는 수치(메트릭)들을 주기적으로 긁어모아 데이터를 수집한다. ✅ 2. 프로메테우스 설정파일 만들기 prometheus.yml global:
  scrape_interval: ]]></description>
            <link>https://www.jscode.kr/blog/installing-prometheus-for-metrics</link>
            <guid isPermaLink="false">installing-prometheus-for-metrics</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Grafana 설치 및 Prometheus 연결]]></title>
            <description><![CDATA[✅ 1. Docker Compose 파일 수정 services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:9.1.0
    container_name: elas]]></description>
            <link>https://www.jscode.kr/blog/installing-grafana-and-connecting-prometheus</link>
            <guid isPermaLink="false">installing-grafana-and-connecting-prometheus</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Grafana Alert를 연동한 서버 에러 발생 시 Discord로 알람 보내주기]]></title>
            <description><![CDATA[✅ 1. Discord 설치하기 사이트 : ✅ 2. 서버 생성하기 디스코드 왼쪽에 추가하기 버튼을 클릭한다. 직접 만들기를 눌러 서버를 추가한다. 기존에 개인 서버가 있다면 개인 서버에서 실습을 진행하여도 무방함. 나와 친구들을 위한 서버를 클릭한다.]]></description>
            <link>https://www.jscode.kr/blog/grafana-alert-notifications-to-discord</link>
            <guid isPermaLink="false">grafana-alert-notifications-to-discord</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[스프링 부트 모니터링 도구 Actuator, Micrometer]]></title>
            <description><![CDATA[✅ 1. Spring Actuator Actuator(액추에이터) : 기계를 움직이는 장치 스프링 부트에서는 ‘서버의 내부 상태를 외부로 보여주는 모니터링 창구’ 역할을 함 Actuator를 켜두면 스프링 부트가 스스로 자신의 상태를 체크함 http:]]></description>
            <link>https://www.jscode.kr/blog/spring-boot-actuator-and-micrometer</link>
            <guid isPermaLink="false">spring-boot-actuator-and-micrometer</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Discover 탭을 통한 로그 검색하기]]></title>
            <description><![CDATA[✅ 1. Discover를 통한 로그 검색 실습하고 있는 날짜 기준으로 선택 우리는 실습에서 logstash.conf 파일의 filter 부분을 빈칸으로 두었기 때문에, 한 줄의 로그를 아무런 가공 없이 통째로 message라는 상자에 넣어서 ES로 ]]></description>
            <link>https://www.jscode.kr/blog/searching-logs-via-kibana-discover</link>
            <guid isPermaLink="false">searching-logs-via-kibana-discover</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 실습을 위한 웨이팅 API 코드 수정]]></title>
            <description><![CDATA[✅ 1. Controller 코드 수정 public class WaitingController {

    private final WaitingService waitingService;

    @PostMapping
    public Respon]]></description>
            <link>https://www.jscode.kr/blog/modifying-waiting-api-for-practice</link>
            <guid isPermaLink="false">modifying-waiting-api-for-practice</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kibana의 핵심 기능은 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Kibana는 무슨 일을 할까?
 K(Kibana) : Elasticsearch에 쌓인 데이터를 시각화하여 그래프와 대시보드로 보여주는 분석 도구 Elasticsearch에 쿼리를 실행하고, 결과를 다양한 형태로 보여줌]]></description>
            <link>https://www.jscode.kr/blog/core-features-of-kibana</link>
            <guid isPermaLink="false">core-features-of-kibana</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Kibana로 Data View 생성하기]]></title>
            <description><![CDATA[✅ 1. Data View 생성하기 해당 화면이 보이면 Data View 생성 완료!]]></description>
            <link>https://www.jscode.kr/blog/creating-kibana-data-views</link>
            <guid isPermaLink="false">creating-kibana-data-views</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[모니터링의 필요성과 모니터링 도구 - ]]></title>
            <description><![CDATA[✅ 1. 모니터링이란 무엇일까? 기능과 가용성을 보장하기 위해 서버의 상태, 성능, 가동 시간 및 리소스 사용을 지속적으로 추적하는 것을 의미한다. 쉽게 말해 24시간 내내 서버에 청진기를 대고 심장 박동(Metric)을 듣고 있는 것 과 같다. ✅ ]]></description>
            <link>https://www.jscode.kr/blog/monitoring-tools-prometheus-and-grafana</link>
            <guid isPermaLink="false">monitoring-tools-prometheus-and-grafana</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Actuator와 Micrometer로 서버 모니터링 하기]]></title>
            <description><![CDATA[✅ 1. build.gradle 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-reg]]></description>
            <link>https://www.jscode.kr/blog/monitoring-server-with-actuator</link>
            <guid isPermaLink="false">monitoring-server-with-actuator</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Kibana 설치 및 설정]]></title>
            <description><![CDATA[✅ 1. Docker Compose 파일 수정 services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:9.1.0
    container_name: elas]]></description>
            <link>https://www.jscode.kr/blog/installing-and-configuring-kibana</link>
            <guid isPermaLink="false">installing-and-configuring-kibana</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 대시보드를 통해 로그 시각화하기]]></title>
            <description><![CDATA[✅ 1. 대시보드 생성 ✅ 2. 대시보드 저장 및 확인]]></description>
            <link>https://www.jscode.kr/blog/visualizing-logs-on-kibana-dashboard</link>
            <guid isPermaLink="false">visualizing-logs-on-kibana-dashboard</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Logback 설정하고 로그 파일로 만들기]]></title>
            <description><![CDATA[✅ 1. Logback 설정 파일 수정하기 logback-spring.xml <?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <!-- property : 자바의 변수 같은 것 -->

    ]]></description>
            <link>https://www.jscode.kr/blog/configuring-logback-for-file-logging</link>
            <guid isPermaLink="false">configuring-logback-for-file-logging</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ELK 스택이란 무엇일까? - ]]></title>
            <description><![CDATA[✅ 1. 서버가 여러 대일 때는 로그를 어떻게  찾을까? 웨이팅 API의 서버가 3대라고 가정해보자 고객 문의 CS가 들어와 로그를 뒤져야 한다고 하면 몇 번 서버를 뒤져야 할까? 에러를 찾기 위해 서버 1번부터 서버 3번까지 압축된 로그 파일을 하나]]></description>
            <link>https://www.jscode.kr/blog/introduction-to-elk-stack</link>
            <guid isPermaLink="false">introduction-to-elk-stack</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Logback, Logstash, Elasticsearch를 활용한 아키텍처 구성]]></title>
            <description><![CDATA[✅ 1. 아키텍처 구성 ES는 로그 한 줄 한 줄을 각각의 도큐먼트로 만든다. 해당 도큐먼트를 모아서 날짜별 인덱스(Index)에 묶어서 보관한다.]]></description>
            <link>https://www.jscode.kr/blog/architecture-of-logback-logstash-elasticsearch</link>
            <guid isPermaLink="false">architecture-of-logback-logstash-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 로그 압축(.gz)으로 서버 용량 확보하기]]></title>
            <description><![CDATA[✅ 1. 로그를 압축해서 보관해야 하는 이유 로그가 긴 파일의 경우, 로그 파일 하나의 크기가 2GB가 넘는 파일도 있음 서버의 하드디스크는 무한하지 않기 때문에, 서버 용량 부족으로 에러가 발생할 수 있음 실무에서는 로그 파일을 그냥 보관하지 않고,]]></description>
            <link>https://www.jscode.kr/blog/optimizing-storage-with-log-compression</link>
            <guid isPermaLink="false">optimizing-storage-with-log-compression</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker 설치]]></title>
            <description><![CDATA[✅ 1. Docker 설치 윈도우 사용자 맥 사용자 ✅ 2. 체크 사항 2023년 7월부터 Docker Compose V1의 업데이트를 중단했다. 따라서 Docker Compose는 V2를 설치할 것을 권장한다. 혹시나 기존에 설치되어 있는 Docke]]></description>
            <link>https://www.jscode.kr/blog/installing-docker-for-logging-stack</link>
            <guid isPermaLink="false">installing-docker-for-logging-stack</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로그를 파일로 보관하는 방법]]></title>
            <description><![CDATA[✅ 1. 콘솔 로그 로그를 실시간으로 확인할 수 있다. 서버를 재시작하거나, 해당 IDE 툴을 끄면 로그도 같이 날아간다. ✅ 2. 로그 파일로 저장 지난 로그를 활용하려면 파일로 저장해야 함. .log 파일 형태로 내 컴퓨터(서버)에 영구 보관 ✅ ]]></description>
            <link>https://www.jscode.kr/blog/how-to-store-logs-as-files</link>
            <guid isPermaLink="false">how-to-store-logs-as-files</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Logback의 Appender란 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Appender란? Logback에서는 로그를 배송하는 목적지(출력 위치)를 Appender가 결정함 ✅ 2. Appender의 종류 ConsoleAppender FileAppender RollingFileAppender]]></description>
            <link>https://www.jscode.kr/blog/understanding-logback-appenders</link>
            <guid isPermaLink="false">understanding-logback-appenders</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Elasticsearch를 로그 수집에 사용하는 이유]]></title>
            <description><![CDATA[✅ 1. 로그 파일을 저장할 때 DB를 사용하면 안되는 이유 로그는 하루에도 수천만 건씩 쌓이는 엄청난 양의 텍스트 데이터임 MySQL과 같은 관계형 DB는 이런 방대한 텍스트에서 특정 단어를 검색하는 게 매우 오래 걸림 따라서 Elasticsearc]]></description>
            <link>https://www.jscode.kr/blog/why-use-elasticsearch-for-logging</link>
            <guid isPermaLink="false">why-use-elasticsearch-for-logging</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Elasticsearch, Logstash 설치 및 설정]]></title>
            <description><![CDATA[✅ 1. Docker Compose 파일 작성 프로젝트 폴더 최상단에 해당 파일을 만든다 ✅ 2. logstash.conf 파일 작성 프로젝트 폴더 최상단에 해당 파일을 만든다 # 1. Input
input {
  file {
    # 도커 컨테이너]]></description>
            <link>https://www.jscode.kr/blog/setup-elasticsearch-and-logstash</link>
            <guid isPermaLink="false">setup-elasticsearch-and-logstash</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Logstash의 핵심 기능은 무엇일까?]]></title>
            <description><![CDATA[✅ 1. Logstash는 무슨 일을 할까? L(Logstash) : 각 서버에서 로그를 수집, 변환하여 Elasticsearch로 전달하는 도구 Logstash는 세 가지 단계(입력, 필터, 출력 구조)를 통해 움직인다 ✅ 2. Logstash의 핵]]></description>
            <link>https://www.jscode.kr/blog/core-features-of-logstash</link>
            <guid isPermaLink="false">core-features-of-logstash</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 로그 읽기 실습으로 CS 대응하기]]></title>
            <description><![CDATA[✅ 1. 문의 접수 내용 안녕하세요 콜센터 김직원입니다. 방금 오후 3시 30분쯤 ‘Tree’ 라는 고객님이 주문을 하셨는데, 쿠폰 할인이 적용이 안된다고 하십니다. 해당 건 확인 부탁드립니다. ✅ 2. 로그 분석 - 해당 시간대 로그 찾기 2026-]]></description>
            <link>https://www.jscode.kr/blog/troubleshooting-cs-issues-using-logs</link>
            <guid isPermaLink="false">troubleshooting-cs-issues-using-logs</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 실습으로 Log Level 이해하기]]></title>
            <description><![CDATA[✅ 1. 각 레벨에 맞게 로그 남겨보기 package com.hi.waiting_api;

@Service
@Slf4j
public class WaitingService {

    private int currentWaitingCount = 0; /]]></description>
            <link>https://www.jscode.kr/blog/hands-on-log-level-configuration</link>
            <guid isPermaLink="false">hands-on-log-level-configuration</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] MdcLoggingFilter로 UUID 부여하기]]></title>
            <description><![CDATA[✅ 1. MDC 필터를 만드는 이유 웨이팅 API에서 100명의 손님이 동시에 웨이팅을 건다면 어떨까? 여러 로그들이 섞이며 로그가 복잡해지고, 에러 발생시 찾기 어려워진다. 서버에 들어오는 모든 요청에 대해 대기번호(Trace ID)를 붙여줄 수 있]]></description>
            <link>https://www.jscode.kr/blog/tracking-requests-with-mdc-logging-filter</link>
            <guid isPermaLink="false">tracking-requests-with-mdc-logging-filter</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로그의 레벨 - TRACE, DEBUG, INFO, WARN, ERROR, FATAL]]></title>
            <description><![CDATA[✅ 1. 로그의 레벨 로그는 총 6개의 레벨을 가짐 TRACE DEBUG INFO WARN ERROR FATAL 위에서 아래로 갈수록 더 높은(심각, 중요) 로그 레벨임! ✅ 2. TRACE 의미 : 추적 가장 상세한 정보를 남김 코드가 한 줄 한 줄]]></description>
            <link>https://www.jscode.kr/blog/understanding-log-levels-trace-to-fatal</link>
            <guid isPermaLink="false">understanding-log-levels-trace-to-fatal</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로그는 어떻게 구성돼있을까? 8가지 구성요소]]></title>
            <description><![CDATA[✅ 1. 로그 전체 보기 로그는 8개의 조각으로 나뉜다. ✅ 2. 시간(Timestamp) 로그가 발생한 시간 로그에서 제일 중요한 정보 중 하나 +는 시간대(Timezone)를 의미한다. 세계표준시(UTC) 보다 9시간 빠르다는 뜻 즉, 대한민국 표]]></description>
            <link>https://www.jscode.kr/blog/eight-components-of-log-structure</link>
            <guid isPermaLink="false">eight-components-of-log-structure</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로그는 왜 필요할까?]]></title>
            <description><![CDATA[✅ 1. 소프트웨어 생명주기 일반적으로 우리가 개발하는 소프트웨어는 요구분석 - 설계 - 구현 - 테스트 - 운영 과정을 거침 ✅ 2. 운영단계에서 문제가 발생한다면?  어떤 문제가 어디서 왜 생겼는지를 파악해야 함. 이때 필요한 것이 바로 로그(Lo]]></description>
            <link>https://www.jscode.kr/blog/why-do-we-need-application-logs</link>
            <guid isPermaLink="false">why-do-we-need-application-logs</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:42:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로그는 대체 어떤 걸 기록해야 할까?]]></title>
            <description><![CDATA[✅ 1. 로그의 어원 로그(Log) 라는 단어의 원래 뜻은 ‘통나무’ 배를 타고 가던 선원들이 배의 속도를 측정하기 위해 밧줄을 묶은 통나무(Log)를 바다에 던졌던 것에서 유래 일정 시간 풀려나간 밧줄의 길이를 재서 속도를 계산하고, 그걸 항해 일지]]></description>
            <link>https://www.jscode.kr/blog/what-to-record-in-application-logs</link>
            <guid isPermaLink="false">what-to-record-in-application-logs</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:42:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습]  맛집 웨이팅 API를 통한 로그실습]]></title>
            <description><![CDATA[✅ 1. 실습 준비 실습 파일은 강의자료 섹션에 첨부파일을 활용할 것 build.gradle 파일 오픈하여 실습 진행 각 IDE 환경에 맞는 롬복을 설치할 것 ✅ 2. 로그 작성을 위한 어노테이션 추가 package com.hi.waiting_api;]]></description>
            <link>https://www.jscode.kr/blog/practice-logging-with-waiting-api</link>
            <guid isPermaLink="false">practice-logging-with-waiting-api</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 18:42:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins에 배치 등록하기(윈도우 사용자)]]></title>
            <description><![CDATA[✅ 1. 젠킨스에 배치 등록 item name : Settlement_Batch item type : Freestyle project
 Build Steps 클릭 Add build Step > Execute Windows batch command 클릭]]></description>
            <link>https://www.jscode.kr/blog/registering-batch-job-on-jenkins-windows</link>
            <guid isPermaLink="false">registering-batch-job-on-jenkins-windows</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 실행 파일(JAR) 빌드하기]]></title>
            <description><![CDATA[✅ 1. 실행 파일 빌드하기 # 윈도우
./gradlew.bat clean build -x test

# 맥/리눅스
./gradlew clean build -x test 결과 확인: build/libs/settlement-0.0.1-SNAPSHOT.j]]></description>
            <link>https://www.jscode.kr/blog/building-executable-jar-file</link>
            <guid isPermaLink="false">building-executable-jar-file</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins 설치 및 설정]]></title>
            <description><![CDATA[✅ 1. 젠킨스 war 파일 다운로드 ✅ 2. 젠킨스 실행하기 java -jar jenkins.war --httpPort=9090 반드시 젠킨스가 설치된 경로까지 이동한 후, 터미널로 해당 명령어를 입력해주세요. 참고로 우리가 설치한 버전은 jdk 2]]></description>
            <link>https://www.jscode.kr/blog/installing-and-configuring-jenkins-server</link>
            <guid isPermaLink="false">installing-and-configuring-jenkins-server</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins 연동을 위한 메인 메소드 및 환경설정 수정]]></title>
            <description><![CDATA[✅ 1. 메인 메소드 변경 	public static void main(String[] args) {
		System.exit(SpringApplication.exit(SpringApplication.run(SettlementApplication.cl]]></description>
            <link>https://www.jscode.kr/blog/configuring-main-method-for-jenkins-integration</link>
            <guid isPermaLink="false">configuring-main-method-for-jenkins-integration</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins 빌드 구동 확인하기]]></title>
            <description><![CDATA[✅ 1. 젠킨스 빌드 구동 확인 해당 시간이 되면 자동으로 젠킨스가 프로그램을 실행한다. console output 메뉴에서 콘솔을 확인할 수 있다. 등록한 리스너와, 배치 작업이 성공적으로 되었는지 확인한다. ✅ 2. 데이터 베이스 확인 정산 테이블]]></description>
            <link>https://www.jscode.kr/blog/verifying-jenkins-build-and-execution</link>
            <guid isPermaLink="false">verifying-jenkins-build-and-execution</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Jenkins에 배치 등록하기(맥 사용자)]]></title>
            <description><![CDATA[✅ 1. 젠킨스에 배치 등록 item name : Settlement_Batch item type : Freestyle project Build Steps 클릭 Add build Step > Execute shell 클릭 echo "[젠킨스] 정산 배]]></description>
            <link>https://www.jscode.kr/blog/registering-batch-job-on-jenkins-mac</link>
            <guid isPermaLink="false">registering-batch-job-on-jenkins-mac</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 배치 Listener 적용하기]]></title>
            <description><![CDATA[✅ 1. 배치 시작과, 배치끝을 알려주는 리스너 작성 JobLoggerListener.java package com.batch.settlement.listener;

@Slf4j
@Component
public class JobLoggerListene]]></description>
            <link>https://www.jscode.kr/blog/applying-batch-listeners-for-monitoring</link>
            <guid isPermaLink="false">applying-batch-listeners-for-monitoring</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ItemProcessor 구현하기]]></title>
            <description><![CDATA[✅ 1. ItemProcessor 구현 SettlementJobConfig.java @Bean
public ItemProcessor<Orders, Settlement> settlementProcessor(){
	  return item -> {
	  ]]></description>
            <link>https://www.jscode.kr/blog/implementing-custom-item-processor</link>
            <guid isPermaLink="false">implementing-custom-item-processor</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리스너(Listener) : 배치의 CCTV]]></title>
            <description><![CDATA[✅ 1. 리스너(Listener)란? 정의 역할 : ✅ 2. 리스너의 2대장 JobExecutionListener (전체 숲을 보는 역할) StepExecutionListener (나무를 보는 역할)]]></description>
            <link>https://www.jscode.kr/blog/introduction-to-spring-batch-listeners</link>
            <guid isPermaLink="false">introduction-to-spring-batch-listeners</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ItemReader 구현하기]]></title>
            <description><![CDATA[✅ 1. ItemReader 구현 SettlementJobConfig.java @Bean
@StepScope
public JpaPagingItemReader<Orders> ordersReader(@Value("#{jobParameters['target]]></description>
            <link>https://www.jscode.kr/blog/implementing-custom-item-reader</link>
            <guid isPermaLink="false">implementing-custom-item-reader</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 주문, 정산 도메인 설계]]></title>
            <description><![CDATA[✅ 1. 주문(Orders) 도메인 생성 Orders.java package com.batch.settlement.domain;

@Entity
@Getter
@NoArgsConstructor
@ToString
public class Orders {
]]></description>
            <link>https://www.jscode.kr/blog/settlement-domain-modeling-design</link>
            <guid isPermaLink="false">settlement-domain-modeling-design</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 스케줄러 등록하기]]></title>
            <description><![CDATA[✅ 1. 스케줄러 클래스 구현 JobScheduler.java package com.batch.settlement.scheduler;

@Slf4j
@Component
@RequiredArgsConstructor
public class JobSched]]></description>
            <link>https://www.jscode.kr/blog/configuring-spring-batch-scheduler</link>
            <guid isPermaLink="false">configuring-spring-batch-scheduler</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[JobExecutionListener란? / StepExecutionListener란 ?]]></title>
            <description><![CDATA[✅ 1. 리스너의 2대장 JobExecutionListener : (전체 숲을 보는 역할) Job 전체의 라이프사이클을 감시 StepExecutionListener : (나무를 보는 역할) 각 Step 내부의 동작을 감시 ✅  2. JobExecuti]]></description>
            <link>https://www.jscode.kr/blog/job-and-step-execution-listeners</link>
            <guid isPermaLink="false">job-and-step-execution-listeners</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 배치 실패시 서버 담당자에게 메일 보내주기]]></title>
            <description><![CDATA[✅ 1. 이메일 발송기 만들기(Service) EmailProvider.java package com.system.batch;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereot]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-failure-email-notification</link>
            <guid isPermaLink="false">spring-batch-failure-email-notification</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 배치 리스너 인터페이스와 어노테이션으로 구현해보기]]></title>
            <description><![CDATA[✅ 1. 인터페이스 구현 방식 MyJobListener.java package com.system.batch;

@Component
@Slf4j
public class MyJobListener implements JobExecutionListener ]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-listener-implementation-guide</link>
            <guid isPermaLink="false">spring-batch-listener-implementation-guide</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Step과 Job 등록하기]]></title>
            <description><![CDATA[✅ 1. Step 등록하기 SettlementJobConfig.java @Bean
public Step settlementStep(){
    return new StepBuilder("settlementStep", jobRepository)
    ]]></description>
            <link>https://www.jscode.kr/blog/registering-batch-steps-and-jobs</link>
            <guid isPermaLink="false">registering-batch-steps-and-jobs</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] 크론(Cron) 표기법 가이드]]></title>
            <description><![CDATA[크론 표기법은 배치 프로그램이나 스케줄러를 실행할 때, "언제 실행할지"를 컴퓨터에게 알려주는 시간 표기법이다. 스프링(Spring)에서는 리눅스 표준(5자리)과 달리 초(Second)가 포함된 6자리 형식을 사용한다. ✅ 1. 필드 구성 (순서 중요]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-cron-expression-guide</link>
            <guid isPermaLink="false">spring-batch-cron-expression-guide</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 최종 프로젝트 생성(스프링 4.0, 스프링배치 6.0, Gradle, Spring Data JPA)]]></title>
            <description><![CDATA[✅ 1. 스프링 부트 프로젝트 생성 - start.spring.io 방식 빌드도구 : Gradle - Groovy 언어 : Java 스프링부트 버전 : 4.0.2 (3점대도 무방) Group : com.batch Artifact : settlement]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-final-project-setup-guide</link>
            <guid isPermaLink="false">spring-batch-final-project-setup-guide</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ItemWriter 구현하기]]></title>
            <description><![CDATA[✅ 1. ItemWriter 구현 SettlementJobConfig.java @Bean
public JpaItemWriter<Settlement> settlementWriter(){
    return new JpaItemWriterBuilder<S]]></description>
            <link>https://www.jscode.kr/blog/implementing-custom-item-writer</link>
            <guid isPermaLink="false">implementing-custom-item-writer</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 100만건 샘플 더미 데이터 삽입]]></title>
            <description><![CDATA[1. 샘플 데이터 삽입  -- 1. 기존 데이터 깨끗하게 비우기 (중복 방지)
TRUNCATE TABLE orders;
TRUNCATE TABLE settlement;

DELIMITER $$

DROP PROCEDURE IF EXISTS fill_d]]></description>
            <link>https://www.jscode.kr/blog/generating-one-million-dummy-data</link>
            <guid isPermaLink="false">generating-one-million-dummy-data</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[아키텍쳐 구조로 보는 배치 작업]]></title>
            <description><![CDATA[✅ 1. 아키텍처 구조 ✅ 2. 데이터 흐름 상세 분석 1. 개별 반복 구간 (One-by-One) ItemReader: DB에서 데이터를 단건(1건) 읽어옵 ItemProcessor: 읽어온 데이터를 단건(1건) 가공함 Buffer(임시 저장소): ]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-architecture-and-workflow</link>
            <guid isPermaLink="false">spring-batch-architecture-and-workflow</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 배달 플랫폼 '배달의 시니' 정산 시스템 요구사항 정의서]]></title>
            <description><![CDATA[✅ 1. 프로젝트 개요 프로젝트명 : 일별 가맹점 정산 배치 시스템 구축 목표 : 매일 발생하는 대량의 주문데이터를 확인하여, 정산 주기가 도래한 건에 대해 수수료를 제외하고 가맹점주에게 정산해주는 자동화 배치 시스템을 구현한다. ✅ 2. 비즈니스 시]]></description>
            <link>https://www.jscode.kr/blog/settlement-system-requirements-definition</link>
            <guid isPermaLink="false">settlement-system-requirements-definition</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[@StepScope 어노테이션을 붙이는 이유]]></title>
            <description><![CDATA[✅ 1. @StepScope의 역할 스프링의 Bean으로 등록한 대상들은, 서버 켜짐과 동시에 스프링의 관리 대상이 됨 우리가 만든 datePrintTasklet 의 경우 jobParameters를 받고 있기 때문에, 실제 앱이 켜질때 Bean을 생성]]></description>
            <link>https://www.jscode.kr/blog/why-use-stepscope-annotation</link>
            <guid isPermaLink="false">why-use-stepscope-annotation</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Chunk 지향 처리란?]]></title>
            <description><![CDATA[✅ 1. 스프링 배치의 두가지 방법 청크 지향 처리(Chunk Oriented Processing) 태스크릿 지향 처리(Tasklet Oriented Processing) ✅ 2. 청크 지향 처리 Chunk(청크) : 크고 무거운 데이터의 덩어리 데이]]></description>
            <link>https://www.jscode.kr/blog/understanding-chunk-oriented-processing</link>
            <guid isPermaLink="false">understanding-chunk-oriented-processing</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[청크가 마지막을 판단하는 기준은 뭘까?]]></title>
            <description><![CDATA[✅ 1. Tasklet vs Chunk 종료 방식 차이 Tasklet: 개발자가 코드 끝에 return RepeatStatus.FINISHED;를 명시하여 "이제 그만 반복해!"라고 알려준다. Chunk: 개발자가 종료 코드를 작성하지 않는다. 대신 ]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-chunk-completion-policy</link>
            <guid isPermaLink="false">spring-batch-chunk-completion-policy</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[JobParameters란?]]></title>
            <description><![CDATA[✅ 1. 오래된 접속 로그 삭제 배치 LocalDate targetDate = LocalDate.of(2026, 1, 26); 
deleteLogs(targetDate); 문제점 해결책 ✅ 2. JobParameters란? 정의: 배치 Job을 실행할]]></description>
            <link>https://www.jscode.kr/blog/understanding-spring-batch-job-parameters</link>
            <guid isPermaLink="false">understanding-spring-batch-job-parameters</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 실무 배치의 90% Reader, Processor, Writer를 활용한 청크 지향 처리 실습]]></title>
            <description><![CDATA[✅ 1. 청크 2개씩 처리 실습 package com.system.batch;

@Slf4j
@Configuration
@RequiredArgsConstructor
public class SimpleChunkConfig {

    private fi]]></description>
            <link>https://www.jscode.kr/blog/hands-on-chunk-oriented-processing</link>
            <guid isPermaLink="false">hands-on-chunk-oriented-processing</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] JobParameters로 날짜 전달 받는 동적 배치 만들어보기]]></title>
            <description><![CDATA[✅ 1. requestDate 전달받기 package com.system.batch;

@Slf4j
@Component
@StepScope
public class DatePrintTasklet implements Tasklet {

    privat]]></description>
            <link>https://www.jscode.kr/blog/dynamic-batch-with-job-parameters</link>
            <guid isPermaLink="false">dynamic-batch-with-job-parameters</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ItemReader란? / ItemProcessor란? / ItemWriter란?]]></title>
            <description><![CDATA[✅ 1. ItemReader란? public interface ItemReader<T> {
    T read() throws Exception, 
        UnexpectedInputException, 
        ParseException]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-reader-processor-writer-concepts</link>
            <guid isPermaLink="false">spring-batch-reader-processor-writer-concepts</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Tasklet 인터페이스로 단일 배치 작업 처리하기]]></title>
            <description><![CDATA[✅ 1. 코드 작 CafeJobTasklet.java package com.system.batch;

@Slf4j
@Component
public class CafeJobTasklet implements Tasklet {

    private int]]></description>
            <link>https://www.jscode.kr/blog/implementing-simple-tasklet-batch</link>
            <guid isPermaLink="false">implementing-simple-tasklet-batch</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:11:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[트랜잭션 처리가 불필요한 배치는 어떻게 만들까?]]></title>
            <description><![CDATA[일반적으로 태스크릿 지향 방식의 배치 처리는 간단하게 처리되는 경우가 대부분이다. 
따라서, 굳이 데이터 베이스의 트랜잭션 관리가 필요하지 않은 경우도 다반사인데, 이때마다 꼭 transactionManager를 넘겨주어야 할까? 

이런 경우에는, ]]></description>
            <link>https://www.jscode.kr/blog/non-transactional-batch-processing</link>
            <guid isPermaLink="false">non-transactional-batch-processing</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:11:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 오래된 접속 로그 자동 삭제 하는 기능 구현하기]]></title>
            <description><![CDATA[✅ 1. 테스트용 샘플 로그 파일 만들기 LogGenerator.java package com.system.batch;

public class LogGenerator {

    private static final String ROOT_PATH =]]></description>
            <link>https://www.jscode.kr/blog/practice-auto-delete-old-access-logs</link>
            <guid isPermaLink="false">practice-auto-delete-old-access-logs</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:11:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Tasklet 지향 처리란?]]></title>
            <description><![CDATA[✅ 1. 스프링 배치의 두 가지 방법 청크 지향 처리(Chunk Oriented Processing) 태스크릿 지향 처리(Tasklet Oriented Processing) ✅ 2. 태스크릿 지향 처리 Tasklet(태스크릿) : 작고 단순한 작업 하]]></description>
            <link>https://www.jscode.kr/blog/understanding-tasklet-oriented-processing</link>
            <guid isPermaLink="false">understanding-tasklet-oriented-processing</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 01:11:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충자료] 현존하는 최고의 배치 툴 : Spring Batch 6.x]]></title>
            <description><![CDATA[✅ 1) 스프링 배치의 특징 뛰어난 유지보수성 다양한 데이터 소스 지원 강력한 장애 복구 테스트 최적화 만능 어노테이션 @Configuration]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-6-introduction</link>
            <guid isPermaLink="false">spring-batch-6-introduction</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 스프링 배치 프로젝트 생성(Spring Boot 4.x & Gradle)]]></title>
            <description><![CDATA[✅ 1. 스프링 부트 프로젝트 생성 - start.spring.io 방식 빌드도구 : Gradle - Groovy 언어 : Java 스프링부트 버전 : 4.0.2 (3점대도 무방) Group : com.system.batch Artifact : sy-]]></description>
            <link>https://www.jscode.kr/blog/guide-spring-batch-project-setup-gradle</link>
            <guid isPermaLink="false">guide-spring-batch-project-setup-gradle</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring Batch를 왜 배우는걸까?]]></title>
            <description><![CDATA[✅ 1. 배치 처리라는 것은 무엇일까? 배치(Batch) 처리는 대량의 데이터를 정해진 시간에 자동으로 일괄 처리하고, 결과를 출력하는 방식을 의미함. ✅ 2. Scheduler vs Batch 1) Scheduler 간편함 : @Scheduled 어]]></description>
            <link>https://www.jscode.kr/blog/why-we-need-spring-batch</link>
            <guid isPermaLink="false">why-we-need-spring-batch</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[스프링 배치의 핵심 컴포넌트 - Job, Step, Repository, Operator]]></title>
            <description><![CDATA[✅ 1) 스프링 배치의 핵심 컴포넌트 Job(일감) Step(단계) JobRepository(기록원) JobOperator(실행버튼) ]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-core-components-job-step</link>
            <guid isPermaLink="false">spring-batch-core-components-job-step</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 카페 시뮬레이션으로 익히는 Job 구성과 실행 흐름]]></title>
            <description><![CDATA[✅ 1. 코드 작성 CafeJobConfig.java package com.system.batch;

@Configuration
public class CafeJobConfig {

    private final JobRepository jobRep]]></description>
            <link>https://www.jscode.kr/blog/spring-batch-job-flow-simulation</link>
            <guid isPermaLink="false">spring-batch-job-flow-simulation</guid>
            <dc:creator><![CDATA[JSCODE 시니]]></dc:creator>
            <pubDate>Sat, 07 Feb 2026 00:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 악의적인 요청을 방지하기 위해, 10초당 API 요청 횟수를 5회로 제한하기 - 2]]></title>
            <description><![CDATA[✅ 실습하기 코드 작성하기 서버 실행시키기 Postman으로 요청 보내보기]]></description>
            <link>https://www.jscode.kr/blog/rate-limit-api-requests-with-redis-part-2</link>
            <guid isPermaLink="false">rate-limit-api-requests-with-redis-part-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:23:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 악의적인 요청을 방지하기 위해, 10초당 API 요청 횟수를 5회로 제한하기 - 1]]></title>
            <description><![CDATA[✅ 문제 상황 클론 받은 프로젝트의 API에는 요청 횟수에 대한 제한(Rate Limit)이 전혀 걸려있지 않다. 이 상태에서는 특정 사용자가 악의적으로 아주 짧은 시간 안에 수십, 수백 번의 요청을 보내면 서버 부하가 급격히 증가할 수 있다. 따라서]]></description>
            <link>https://www.jscode.kr/blog/rate-limit-api-requests-with-redis-part-1</link>
            <guid isPermaLink="false">rate-limit-api-requests-with-redis-part-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:23:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Sorted Set 자료 구조 (ZCARD, ZREMRANGEBYSCORE, EXPIRE)]]></title>
            <description><![CDATA[API 요청 횟수 제한 기능을 구현하기 위해 필요한, Sorted Set 자료 구조의 명령어를 추가로 더 배워보자. ✅ Sorted Set의 데이터 개수 조회 # Sorted Set 생성 및 데이터 삽입
$ ZADD ranking 1 apple
$ Z]]></description>
            <link>https://www.jscode.kr/blog/redis-sorted-set-advanced-operations</link>
            <guid isPermaLink="false">redis-sorted-set-advanced-operations</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:23:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인증 기능을 로컬 세션 스토리지로 구현했을 때 발생하는 문제점 - 2]]></title>
            <description><![CDATA[이번에는 Spring Boot 서버를 2대 실행시켜서, 이전 강의에서 이론으로 배웠던 로컬 세션 스토리지의 문제점을 눈으로 직접 확인해보자. ✅ 실습 Spring Boot 서버 두 대 띄우기 Postman으로 API 테스트해보기]]></description>
            <link>https://www.jscode.kr/blog/problems-with-local-session-storage-part-2</link>
            <guid isPermaLink="false">problems-with-local-session-storage-part-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Set과 Bitmap의 공통점 / 차이점]]></title>
            <description><![CDATA[✅ Set vs Bitmap [공통점] Set과 Bitmap은 둘 다 중복을 허용하지 않는 자료구조라는 점이 공통점이다. [차이점] Set은 실제 값을 있는 그대로 저장하는 자료구조이다. 문자열, 숫자, UUID 등 다양한 형태의 데이터를 그대로 담을]]></description>
            <link>https://www.jscode.kr/blog/set-vs-bitmap-in-redis</link>
            <guid isPermaLink="false">set-vs-bitmap-in-redis</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 내 위치를 기준으로 반경 1km에 위치한 카페 찾기 - 2]]></title>
            <description><![CDATA[✅ 실습 테스트를 위해 Redis에 생성되어 있는 Key 삭제하기 서버 실행시키기 Postman으로 카페 추가하기 Postman으로 특정 위치를 기준으로 1km 반경에 있는 카페 조회하기]]></description>
            <link>https://www.jscode.kr/blog/find-nearby-cafes-with-redis-geospatial-part-2</link>
            <guid isPermaLink="false">find-nearby-cafes-with-redis-geospatial-part-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 하루 동안 서비스에 방문한 사용자 수(DAU) 카운팅하기 - 3]]></title>
            <description><![CDATA[✅ 구현 방법 하루동안 서비스에 방문한 사용자 수를 카운팅하려면 사용자 별로 방문을 했는 지 여부를 기록으로 남겨야 한다. 방문을 했는 지 여부는 true/false로 표현할 수 있기 때문에 Redis의 자료구조 중에서 Bitmap을 활용한다. 하루 ]]></description>
            <link>https://www.jscode.kr/blog/count-daily-active-users-with-redis-part-3</link>
            <guid isPermaLink="false">count-daily-active-users-with-redis-part-3</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Geospatial 자료 구조 (GEOADD, GEOPOS, GEODIST, GEOSEARCH)]]></title>
            <description><![CDATA[✅ Geospatial 자료 구조 Redis에서 Geospatial은 위치 데이터(경도, 위도)를 저장하고 검색하는 데 최적화된 자료 구조이다. 이 자료 구조는 특정 위치 기준으로 주어진 거리 내의 데이터를 찾아야 할 때 자주 사용하는 자료 구조이다.]]></description>
            <link>https://www.jscode.kr/blog/redis-geospatial-data-structure</link>
            <guid isPermaLink="false">redis-geospatial-data-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인증 기능을 로컬 세션 스토리지로 구현했을 때 발생하는 문제점 - 1]]></title>
            <description><![CDATA[Redis로 세션 스토리지를 구축하기 전에, 로컬 세션 스토리지 방식으로 구현한 코드를 먼저 살펴보자.  ✅ 실습 코드 살펴보기 Spring Boot 서버 실행하기 Postman으로 API 잘 작동하는 지 테스트해보기]]></description>
            <link>https://www.jscode.kr/blog/problems-with-local-session-storage-part-1</link>
            <guid isPermaLink="false">problems-with-local-session-storage-part-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Redis로 세션 스토리지 구축하기]]></title>
            <description><![CDATA[Spring Boot에는 spring-session-data-redis라는 라이브러리가 있어서 Redis로 세션 스토리지를 쉽게 구축할 수 있다. 이 라이브러리를 활용해서 세션 스토리지를 구축해보자. ✅ 실습 의존성 추가하기 application.ym]]></description>
            <link>https://www.jscode.kr/blog/build-session-storage-with-redis</link>
            <guid isPermaLink="false">build-session-storage-with-redis</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 하루 동안 서비스에 방문한 사용자 수(DAU) 카운팅하기 - 1]]></title>
            <description><![CDATA[✅ 문제 상황 서비스를 운영하다보면 하루 동안 서비스에 방문한 사용자 수(DAU, Daily Active Users)를 파악해야 할 때가 많다. 그런데 하루 방문자 수를 카운팅하고 조회할 때마다 RDB(ex. MySQL)로 처리하면 트래픽이 많아질수록]]></description>
            <link>https://www.jscode.kr/blog/count-daily-active-users-with-redis-part-1</link>
            <guid isPermaLink="false">count-daily-active-users-with-redis-part-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[서버가 2대 이상일 경우, Redis로 세션 스토리지를 구축해야 하는 이유]]></title>
            <description><![CDATA[✅ 세션(Session) 서비스에서 로그인 기능을 구현할 때 크게 2가지 방식으로 구현한다. JWT 방식과 세션(Session) 방식이 있다. 그 중에서 세션 방식은 다음과 같은 흐름으로 동작한다. 사용자가 ID / 비밀번호로 로그인 요청 서버는 인증]]></description>
            <link>https://www.jscode.kr/blog/why-use-redis-session-store-in-multi-server-environment</link>
            <guid isPermaLink="false">why-use-redis-session-store-in-multi-server-environment</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 하루 동안 서비스에 방문한 사용자 수(DAU) 카운팅하기 - 2]]></title>
            <description><![CDATA[✅ 구현 방법 하루동안 서비스에 방문한 사용자 수를 카운팅하려면, 하루에 어떤 사용자가 방문했는 지 데이터로 저장해두어야 한다. 이 때, 한 명의 사용자가 여러 번 방문하더라도 한 번으로 카운팅해야 하기 때문에 중복없이 저장해야 한다. 또한 순서와는 ]]></description>
            <link>https://www.jscode.kr/blog/count-daily-active-users-with-redis-part-2</link>
            <guid isPermaLink="false">count-daily-active-users-with-redis-part-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Bitmap 자료 구조 (SETBIT, GETBIT, BITCOUNT)]]></title>
            <description><![CDATA[✅ Bitmap 자료 구조 Redis에서 Bitmap은 아주 적은 메모리로 대량의 boolean 상태를 저장할 때 사용하는 자료구조이다. Bitmap의 가장 큰 장점은 공간 효율성이다. 일반적으로 boolean 값을 하나 저장하려면 8 bit 이상이 ]]></description>
            <link>https://www.jscode.kr/blog/redis-bitmap-data-structure</link>
            <guid isPermaLink="false">redis-bitmap-data-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 내 위치를 기준으로 반경 1km에 위치한 카페 찾기 - 1]]></title>
            <description><![CDATA[✅ 상황 실무에서 ‘내 위치를 기준으로 반경 1km에 위치한 카페 찾는 기능’을 구현해야 한다고 가정하자. 만약 이 기능을 RDB인 MySQL로 구현해야 한다면 SQL문이 굉장히 복잡해지고 거리 계산을 일일이 다 해야되기 때문에 성능도 좋지 않다. 그]]></description>
            <link>https://www.jscode.kr/blog/find-nearby-cafes-with-redis-geospatial-part-1</link>
            <guid isPermaLink="false">find-nearby-cafes-with-redis-geospatial-part-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Set 자료 구조 (SADD, SMEMBERS, SCARD)]]></title>
            <description><![CDATA[✅ Set 이전 강의에서 Redis의 Sorted Set 자료 구조를 먼저 배웠었다. Sorted Set은 score(점수)를 기준으로 자동 정렬되는 중복없는 자료 구조라고 설명했다. Set은 정렬되지 않는 중복 없는 자료구조를 뜻한다. 이런 특성 때]]></description>
            <link>https://www.jscode.kr/blog/redis-set-data-structure</link>
            <guid isPermaLink="false">redis-set-data-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Hash 자료 구조 (HSET, HGET, HGETALL)]]></title>
            <description><![CDATA[✅ Hash Redis에서 Hash는 하나의 key 안에 여러 개의 field-value 쌍을 저장할 수 있는 자료구조이다. Hash는 json 객체의 구성과 유사해서, 여러 속성들을 묶어서 저장할 때 적합하다. ✅ Hash에 데이터 저장 # Hash]]></description>
            <link>https://www.jscode.kr/blog/redis-hash-data-structure</link>
            <guid isPermaLink="false">redis-hash-data-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[String 자료 구조 (SET, GET, DEL, SETNX) ]]></title>
            <description><![CDATA[✅ String 자료 구조의 SETNX # key, value 구조로 데이터 저장하기
$ SET hobby soccer

# key로 value 조회하기
$ GET hobby

# 기존에 hobby라는 key가 존재하더라도, 해당 key에 value를]]></description>
            <link>https://www.jscode.kr/blog/redis-string-data-structure</link>
            <guid isPermaLink="false">redis-string-data-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:08:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 많이 검색한 키워드 Top 10을 보여주는 '인기 검색어 기능’ 만들기 - 1]]></title>
            <description><![CDATA[✅ 인기 검색어 기능 구현 실제 서비스를 구현하다보면 특정 기준으로 순위별 데이터를 보여줘야 하는 경우가 많다. 예를 들어, 인기 게시글이라던지, 인기 검색어라던지, 인기순으로 영화 데이터를 보여줘야 된다던지, 상품을 판매순으로 보여줘야 되는 것들이 ]]></description>
            <link>https://www.jscode.kr/blog/build-popular-search-keywords-feature-part-1</link>
            <guid isPermaLink="false">build-popular-search-keywords-feature-part-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:08:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Sorted Set 자료 구조 (ZADD, ZRANGE, ZINCRBY)]]></title>
            <description><![CDATA[✅ Sorted Set (ZSet) Redis에서 Sorted Set(ZSet)은 score(점수)를 기준으로 자동 정렬되는 중복 없는 자료구조이다. 이런 특성 때문에 실제 서비스에서 랭킹 시스템, 실시간 인기 데이터 관리처럼 순서와 가중치가 중요한 ]]></description>
            <link>https://www.jscode.kr/blog/redis-sorted-set-data-structure</link>
            <guid isPermaLink="false">redis-sorted-set-data-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:08:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 많이 검색한 키워드 Top 10을 보여주는 '인기 검색어 기능’ 만들기 - 2]]></title>
            <description><![CDATA[이번에는 검색 API와 인기 검색어 조회 API를 Redis를 활용해 구현해보자. ✅ 구현 방법 인기 검색어 조회 API에서는 인기순으로 검색어를 정렬해야 하기 때문에, 자동 정렬을 해주는 자료구조인 Sorted Set을 활용한다. 검색을 할 때마다 ]]></description>
            <link>https://www.jscode.kr/blog/build-popular-search-keywords-feature-part-2</link>
            <guid isPermaLink="false">build-popular-search-keywords-feature-part-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:08:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis의 수많은 자료 구조를 효율적으로 배우려면?]]></title>
            <description><![CDATA[✅ Redis의 수많은 자료 구조를 실전에서 써먹을 수 있게 배우는 방법 ‘비전공자를 위한 Redis 입문/실전 (조회 성능 최적화편)’ 강의에서는 가장 기본적이고 많이 쓰이는 String 타입 딱 한 가지를 배웠다. 하지만 Redis는 String ]]></description>
            <link>https://www.jscode.kr/blog/how-to-learn-redis-data-structures-efficiently</link>
            <guid isPermaLink="false">how-to-learn-redis-data-structures-efficiently</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 재고를 차감할 때 동시성 이슈로 인한 오차가 발생하지 않도록 만들기 - 1]]></title>
            <description><![CDATA[✅ 문제 상황 100명의 사용자가 하나의 상품을 1개씩 구매하면, 이 상품의 재고는 정확하게 100개가 차감되는 게 당연하다. 그런데 실제 코드를 실행시켜보면 오차가 발생하는 경우가 많다. 한 마디로, 재고가 100개가 차감되어야 하는데 95개, 92]]></description>
            <link>https://www.jscode.kr/blog/prevent-concurrency-issues-in-stock-deduction-part-1</link>
            <guid isPermaLink="false">prevent-concurrency-issues-in-stock-deduction-part-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[List 자료 구조 (RPUSH, LRANGE, LPOP 등)]]></title>
            <description><![CDATA[✅ List (리스트) Redis에서 List(리스트)는 순서대로 데이터를 저장할 수 있는 자료구조이다. 이런 특성 때문에 실제 서비스에서 스택(stack)과 큐(queue)로 자주 사용된다. ✅ 자주 사용하는 명령어 # RPUSH [key] [val]]></description>
            <link>https://www.jscode.kr/blog/redis-list-data-structure</link>
            <guid isPermaLink="false">redis-list-data-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 좋아요 수 폭증으로 인한 DB 부하를 Redis로 해결하기 - 2]]></title>
            <description><![CDATA[✅ 문제 원인 누군가 좋아요를 한 번 누를 때마다 DB에 계속해서 요청을 보낸다. 만약 1000명의 사용자가 글을 보고 좋아요를 누르면 1000번의 DB 쓰기 작업을 해야 한다. DB 부하의 원인은 크게 2가지이다. 한 번의 요청이 일어날 때마다 매번]]></description>
            <link>https://www.jscode.kr/blog/reduce-db-load-from-like-traffic-with-redis-part-2</link>
            <guid isPermaLink="false">reduce-db-load-from-like-traffic-with-redis-part-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 재고를 차감할 때 동시성 이슈로 인한 오차가 발생하지 않도록 만들기 - 3]]></title>
            <description><![CDATA[이번 강의에서는 Redis로 Lock을 구현해 동시성 이슈를 해결해보자. ✅ 문제 해결 코드 작성하기 서버 실행시키기 테스트를 위해 DB에 데이터 넣어주기 부하 테스트 스크립트 살펴보기 부하테스트 진행하기]]></description>
            <link>https://www.jscode.kr/blog/prevent-concurrency-issues-in-stock-deduction-part-3</link>
            <guid isPermaLink="false">prevent-concurrency-issues-in-stock-deduction-part-3</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 재고를 차감할 때 동시성 이슈로 인한 오차가 발생하지 않도록 만들기 - 2]]></title>
            <description><![CDATA[✅ 원인 파악 이전 강의에서 실제 테스트를 해보니 원래 차감되어야 하는 개수보다 적게 차감이 됐다. 한 마디로 재고를 차감할 때 오차가 발생했다. 실제 서비스에서는 이런 문제가 절대 발생하면 안 된다. 이 문제를 해결하기 위해 문제의 원인을 살펴보자.]]></description>
            <link>https://www.jscode.kr/blog/prevent-concurrency-issues-in-stock-deduction-part-2</link>
            <guid isPermaLink="false">prevent-concurrency-issues-in-stock-deduction-part-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 좋아요 수 폭증으로 인한 DB 부하를 Redis로 해결하기 - 1]]></title>
            <description><![CDATA[✅ 문제 상황 ‘비전공자를 위한 Redis 입문/실전 (조회 성능 최적화편)’ 강의에서는 데이터 조회(Read) 작업을 빠르게 만드는 가장 기초적이면서도 강력한 전략인 Cache Aside 전략을 배웠다. 하지만 데이터 쓰기(Write) 작업이 미친 ]]></description>
            <link>https://www.jscode.kr/blog/reduce-db-load-from-like-traffic-with-redis-part-1</link>
            <guid isPermaLink="false">reduce-db-load-from-like-traffic-with-redis-part-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 00:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Cloudflare 환경변수, Supabase 키 설정]]></title>
            <description><![CDATA[Cloudflare 환경변수, Supabase 키 설정 edge function을 호출할 때는 supabase API key (anon public)가 필요합니다. 복사해줍니다. cloudflare에서 환경변수로 세팅해줍니다. 변수 이름은 임의로 정하]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-cloudflare</link>
            <guid isPermaLink="false">adsense-with-ai-cloudflare</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Cursor로 최종 UI/UX 다듬기 (API 기반 데이터 표시)]]></title>
            <description><![CDATA[Cursor로 최종 UI/UX 다듬기 (API 기반 데이터 표시) 기존 웹사이트 디자인에서 api 호출 기반의 데이터로 바뀐 모습입니다. 유저친화적으로 UI를 꾸며가면서 최종본까지 개선해줍니다. 여기까지 왔으면 사실상 90%는 끝났습니다. 그런데 사용]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-trimming</link>
            <guid isPermaLink="false">adsense-with-ai-trimming</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Supabase Edge Function 구현 & WeatherAPI 연동]]></title>
            <description><![CDATA[Supabase Edge Function 구현 & WeatherAPI 연동 OPEN API를 제공하는 사이트는 스펙 문서도 함께 제공합니다. 직접 스펙을 들여다볼 필요 없이 Cursor에게 작업을 위임합니다. 또한, 우리가 추후에 사용할 서버리스 기능]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-supabase</link>
            <guid isPermaLink="false">adsense-with-ai-supabase</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[OPEN API 선정(WeatherAPI)]]></title>
            <description><![CDATA[OPEN API 선정하기 저는 날씨 관련 웹사이트를 만들 것이기 때문에, 날씨 관련 OPEN API를 찾아볼 겁니다. 요즘 세상에는 수많은 OPEN API가 있지만, 우리가 사용할 수 있는 것들은 정해져있습니다. 무료여야 함 상업적 사용이 허용되어야 ]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-select-api</link>
            <guid isPermaLink="false">adsense-with-ai-select-api</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[v0로 초기 화면 설계 및 개선]]></title>
            <description><![CDATA[v0로 초기 화면 설계 및 개선 사이트의 보이는 부분, 쉽게 말해 껍데기를 먼저 만들 겁니다. 경험상 바로 Cursor에 “이런 사이트 만들어줘”라고 시키는 것보다, 
AI 빌더를 통해 화면 구조를 먼저 잡는 방식이 훨씬 효율적입니다. 코드를 직접 작]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-v0</link>
            <guid isPermaLink="false">adsense-with-ai-v0</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[v0 결과물을 Cursor 프로젝트로 이식]]></title>
            <description><![CDATA[v0에서 다듬은 FE 완성본을 Cursor로 옮기기 Download ZIP 버튼을 통해 완성본을 다운로드받을 수 있습니다. 압축을 푼 후, 기존 프로젝트(skeleton)로 옮겨 줍니다. 그리고 Cursor를 이용해 디자인을 이식해줍니다.]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-v0-to-cursor</link>
            <guid isPermaLink="false">adsense-with-ai-v0-to-cursor</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[이번에 만들 예제(날씨 기반 옷차림 추천 사이트 아키텍처)]]></title>
            <description><![CDATA[이번에 만들어볼 사이트 구조 이해하기 이번에 예시로써 만들어볼 웹사이트는 ‘날씨에 맞게 옷차림을 추천해주는 웹사이트’입니다.
 사용자는 브라우저(Chrome, Safari 같은 웹앱)로 웹사이트에 접속하고, 날씨 정보를 볼 수 있습니다. 구성은 어떻게]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-practice</link>
            <guid isPermaLink="false">adsense-with-ai-practice</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[개발 환경 세팅]]></title>
            <description><![CDATA[개발 환경 세팅 사이트를 만들기 전에, 우리가 앞으로 사용할 몇 가지 필수 도구를 준비해두어야 합니다.
이 도구들은 모두 무료이며, 한 번만 설정해두면 이후 과정이 훨씬 편해집니다. 다만 Cursor의 경우에는 일주일 무료체험기간이 있고 이후엔 결제가]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-settings</link>
            <guid isPermaLink="false">adsense-with-ai-settings</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[웹사이트를 만들기 전에 고려해야 할 것]]></title>
            <description><![CDATA[웹사이트를 만들기 전에 고려해야 할 것 본격적으로 웹사이트를 만들기 전에 고려해야 하는 내용이 있습니다. 아이디어가 여러 개가 있더라도, 이왕이면 그 중에 수익화 가능성이 가장 높은 것부터 시작하는 게 좋습니다. 단순히 “돈이 먼저”라는 의미가 아닙니]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-note</link>
            <guid isPermaLink="false">adsense-with-ai-note</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[서비스 구조 4가지 패턴 정리 (①~ ④)]]></title>
            <description><![CDATA[구조 이해하고 가기 본격적으로 사이트를 만들기 전에, 서비스는 어떤 구조들로 만들 수 있는지 알아볼 것입니다. 그리고 그 중 한가지 구조를 선택해서 진행하겠습니다. ①은 가장 단순한 형태로, 화면만 존재하는 구조입니다. 사용자가 뭔가 입력하면 결과를 ]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-patterns</link>
            <guid isPermaLink="false">adsense-with-ai-patterns</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[실제로 광고 수익화에 성공한 웹사이트 소개]]></title>
            <description><![CDATA[실제로 광고 수익화에 성공한 웹사이트 소개 저의 경우, 처음으로 광고 수익화에 성공했던 서비스는 qwzd.kr이라는 사이트입니다. 넥슨의 FC 온라인(구 피파온라인) 전적을 검색할 수 있는 웹 서비스입니다. 저는 피파온라인이라는 게임을 즐기던 대학생이]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-success-case</link>
            <guid isPermaLink="false">adsense-with-ai-success-case</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 12:35:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[절약 플랜, Budgets, Cost Explorer, Billing and Cost Management, Trusted Advisor (★★]]></title>
            <description><![CDATA[✅ 절약 플랜 (Savings Plan) 절약 플랜이란 AWS 비용을 절감하기 위해 일정 기간 및 사용량을 약정하면 할인된 요금이 적용되는 모델을 의미한다. [유형] 컴퓨팅 절약 플랜 (Compute Savings Plan) EC2 인스턴스 절약 플랜]]></description>
            <link>https://www.jscode.kr/blog/aws-cost-management-and-optimization</link>
            <guid isPermaLink="false">aws-cost-management-and-optimization</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[보안그룹, NACL (★★★)]]></title>
            <description><![CDATA[✅ 보안 그룹(Security Group) 보안 그룹(Security Group)이란 AWS 리소스에 대해 트래픽을 제어하는 기능을 의미한다. AWS 리소스(ex. EC2 인스턴스)를 집이라고 생각한다면, 보안 그룹은 집 바깥 쪽에 쳐져있는 울타리와 ]]></description>
            <link>https://www.jscode.kr/blog/aws-security-groups-and-nacl</link>
            <guid isPermaLink="false">aws-security-groups-and-nacl</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Aurora, DynamoDB, ElasitCache (★★★)]]></title>
            <description><![CDATA[✅ Aurora Aurora는 ‘고성능’ 관계형 데이터베이스(RDBMS) 서비스이다. Auror의 대표적인 유형으로는 Aurora MySQL, Aurora PostgreSQL이 존재한다. [기능] Global Database (글로벌 데이터베이스) A]]></description>
            <link>https://www.jscode.kr/blog/aws-managed-database-services</link>
            <guid isPermaLink="false">aws-managed-database-services</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EMR, Spark, RedShift, Athena, Kinesis, Glue, X-Ray, CloudWatch (★★]]></title>
            <description><![CDATA[✅ EMR (Elastic MapReduce) EMR은 빅데이터 처리를 위한 컴퓨팅 서비스이다. ✅ Spark Spark는 대규모 데이터 처리와 분석을 위한 오픈소스이다. [특징] 대규모 데이터를 여러 서버에서 동시에 처리할 수 있는 고속 엔진이다. ]]></description>
            <link>https://www.jscode.kr/blog/aws-analytics-and-monitoring-services</link>
            <guid isPermaLink="false">aws-analytics-and-monitoring-services</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Site-to-Site VPN, Direct Connect, Transit Gateway (★★★)]]></title>
            <description><![CDATA[✅ Site-to-Site VPN Site-to-Site VPN은 인터넷을 이용해 암호화된 터널을 만들어 온프레미스와 AWS의 네트워크를 연결해주는 서비스이다. [암기 Tip] VPN : 암호화 서비스 Site-to-Site : 사이트 간에 연결을 하]]></description>
            <link>https://www.jscode.kr/blog/aws-hybrid-network-connectivity</link>
            <guid isPermaLink="false">aws-hybrid-network-connectivity</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ECS, Lambda, Step Functions, API Gateway (★★★)]]></title>
            <description><![CDATA[✅ ECS ECS는 Docker 컨테이너를 쉽게 운영하게 해주는 서비스이다. [유형] EC2 기반의 ECS Fargate 기반의 ECS ✅ Lambda Lambda는 AWS가 서버를 관리하고, 개발자는 코드만 올리면 실행되는 서비스이다. [특징] 서버]]></description>
            <link>https://www.jscode.kr/blog/aws-serverless-and-container-services</link>
            <guid isPermaLink="false">aws-serverless-and-container-services</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RDS, 스토리지 유형, 기능 (★★★) ]]></title>
            <description><![CDATA[✅ RDS란? RDS는 관계형 데이터베이스(RDBMS) 서비스이다. 대표적인 관계형 데이터베이스로 MySQL, PostgreSQL이 있다. ✅ RDS 스토리지 유형 범용 SSD 스토리지(gp3, gp2) 프로비저닝된 IOPS SSD ✅ 기능 Multi]]></description>
            <link>https://www.jscode.kr/blog/amazon-rds-storage-and-features</link>
            <guid isPermaLink="false">amazon-rds-storage-and-features</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[IAM, Identity Center, STS, Cognito, CloudTrail (★★★)]]></title>
            <description><![CDATA[✅ IAM (Identity And Access Management) IAM은 AWS 리소스에 접근할 권한들을 관리하는 서비스이다. [기능] IAM 사용자(User) : AWS 서비스를 사용할 특정 사용자 또는 애플리케이션 IAM 역할(Role) : ]]></description>
            <link>https://www.jscode.kr/blog/aws-identity-and-access-management</link>
            <guid isPermaLink="false">aws-identity-and-access-management</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Secrets Manager, System Manager Parameter Store, KMS, ACM (★★★)]]></title>
            <description><![CDATA[✅ Secrets Manager Secrets Manager는 설정값/비밀값을 안전하게 저장하는 서비스이다. ✅ System Manager Parameter Store System Manager Parameter Store는 설정값/비밀값을 안전하게 ]]></description>
            <link>https://www.jscode.kr/blog/aws-secrets-and-key-management</link>
            <guid isPermaLink="false">aws-secrets-and-key-management</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[VPC, 서브넷, 인터넷 게이트웨이, NAT 게이트웨이, VPC Endpoint, PrivateLink, VPC 피어링 (★★★)]]></title>
            <description><![CDATA[✅ VPC, 서브넷 VPC는 가상의 네트워크 공간(컴퓨터들끼리 서로 통신하는 공간)을 의미한다. 서브넷은 하나의 큰 네트워크(VPC, 회사 네트워크 등)를 작은 네트워크 단위로 나눈 것을 의미한다. VPC를 여러개의 서브넷으로 나눌 때 가장 많이 활용]]></description>
            <link>https://www.jscode.kr/blog/aws-vpc-networking-components</link>
            <guid isPermaLink="false">aws-vpc-networking-components</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[WAF, Shield, GuardDuty, Macie, CloudFront (★★★)]]></title>
            <description><![CDATA[✅ WAF (Web Application Firewall) WAF는 웹 애플리케이션 앞단에서 HTTP/HTTPS 요청을 검사해서 공격 트래픽을 차단하는 보안 서비스이다. WAF는 인프라 아키텍처에서 외부 트래픽이 들어오는 가장 앞단에 주로 배치한다. ]]></description>
            <link>https://www.jscode.kr/blog/aws-security-protection-services</link>
            <guid isPermaLink="false">aws-security-protection-services</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[SQS, SNS, EventBridge, Backup (★★★)]]></title>
            <description><![CDATA[✅ SQS (Simple Queue Service) SQS는 메시지(요청)를 큐에 쌓아 순서대로 처리하는 서비스이다. [특징] 일련의 작업을 ‘순서대로’ 처리할 수 있다. 결합을 느슨하게 할 수 있다. (= 결합도 낮춤 = 의존성 최소화 = 독립적으로]]></description>
            <link>https://www.jscode.kr/blog/aws-messaging-and-event-services</link>
            <guid isPermaLink="false">aws-messaging-and-event-services</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Route53 (★★]]></title>
            <description><![CDATA[✅ Route53 Route53은 도메인(www.jscode.kr)을 IP(52.123.25.11) 주소로 변환하고, 트래픽을 라우팅(특정 방향으로 전달)하는 서비스이다. ✅ Route53 라우팅 정책 단순 라우팅 (Simple Routing): 단일]]></description>
            <link>https://www.jscode.kr/blog/amazon-route53-dns-routing</link>
            <guid isPermaLink="false">amazon-route53-dns-routing</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2, ELB, Global Accelerator, CloudFront (★★★)]]></title>
            <description><![CDATA[✅ EC2 EC2는 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스이다. EC2를 쉽게 생각하려면 하나의 컴퓨터(서버)라고 생각하면 된다. [기능] 오토 스케일링 (Auto Scaling) : 대상 추적 정책에 따라 자동으로 서버를 확장 또는 축소 시]]></description>
            <link>https://www.jscode.kr/blog/aws-compute-and-networking-services</link>
            <guid isPermaLink="false">aws-compute-and-networking-services</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:48:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[S3 암호화-SSE, S3 Batch Operations (★★]]></title>
            <description><![CDATA[✅ SSE (Server Side Encryption) SSE는 서버가 자체적으로 암호화하는 방식을 의미한다. S3 암호화 설정은 파일 보안의 핵심이다. 암호화 설정을 해두지 않으면 해킹당했을 대 해커가 파일을 바로 열어볼 수 있게 된다. 비밀번호를 ]]></description>
            <link>https://www.jscode.kr/blog/s3-encryption-and-batch-operations</link>
            <guid isPermaLink="false">s3-encryption-and-batch-operations</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EBS, EFS, FSx, 인스턴스 스토어 (★★★)  ]]></title>
            <description><![CDATA[✅ EBS (Elastic Block Store) EBS는 외장 SSD/HDD처럼 EC2(또는 RDS)에 연결해서 사용하는 블록 스토리지 서비스이다. [특징] EBS는 EC2, RDS를 제외한 다른 AWS 서비스에는 연결해서 사용할 수 없다. EBS는]]></description>
            <link>https://www.jscode.kr/blog/aws-storage-ebs-efs-fsx-instance-store</link>
            <guid isPermaLink="false">aws-storage-ebs-efs-fsx-instance-store</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DataSync, Snowball Edge, Transfer Family, Storage Gateway (★★★) ]]></title>
            <description><![CDATA[✅ DataSync DataSync는 대용량 데이터를 전송할 때 사용하는 서비스이다. ✅ Snowball Edge Snowball Edge는 ‘물리적 장비 배송’으로 대용량 데이터를 전송할 때 사용하는 서비스이다. 이게 무슨 말인지 이해하려면 어떤 식]]></description>
            <link>https://www.jscode.kr/blog/aws-hybrid-and-data-transfer-services</link>
            <guid isPermaLink="false">aws-hybrid-and-data-transfer-services</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[S3 스토리지 클래스 유형 (★★★) ]]></title>
            <description><![CDATA[✅ S3 스토리지 클래스 유형 S3 스토리지 클래스는 저장소의 종류를 의미한다. S3 Standard : 기본 스토리지 S3 Intelligent-Tiering : 불규칙한 접근 패턴을 AWS가 자동으로 분석해 가장 비용 효율적인 계층으로 데이터를 분]]></description>
            <link>https://www.jscode.kr/blog/s3-storage-classes</link>
            <guid isPermaLink="false">s3-storage-classes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[간단 요약] 온프레미스, 마이그레이션]]></title>
            <description><![CDATA[✅ 온프레미스 (On-premise) 온프레미스란 회사가 직접 서버와 인프라의 장비를 직접 사서, 회사 건물의 전산실에 서버를 두고 운영하는 방식을 뜻한다. 온프레미스의 반대말은 클라우드(AWS)이다. ✅ 마이그레이션 (Migration) 마이그레이션]]></description>
            <link>https://www.jscode.kr/blog/onpremise-vs-migration</link>
            <guid isPermaLink="false">onpremise-vs-migration</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[간단 요약] 리전, 가용성, 가용 영역, 다중 AZ, 단일 AZ ]]></title>
            <description><![CDATA[✅ 리전(Region)이란? 리전(Region)이란 인프라를 지리적으로 나누어 배포한 각각의 데이터 센터를 의미한다. 말이 어렵다. 조금 더 쉽게 풀어서 EC2에 대입해서 생각해보자. 우린 EC2가 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스라는 ]]></description>
            <link>https://www.jscode.kr/blog/aws-regions-and-availability-zones</link>
            <guid isPermaLink="false">aws-regions-and-availability-zones</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[간단 요약] EC2, RDS, S3, Route53, ELB, CloudFront, Lambda]]></title>
            <description><![CDATA[✅ EC2(Elastic Compute Cloud)란? 한 줄 요약 : 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스이다. EC2를 쉽게 얘기하면 하나의 컴퓨터를 의미한다. ✅ RDS(Relational Database Service)란? 한 줄 요]]></description>
            <link>https://www.jscode.kr/blog/ec2-rds-s3-route53-elb-cloudfront-lambda</link>
            <guid isPermaLink="false">ec2-rds-s3-route53-elb-cloudfront-lambda</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[S3 버전 관리, 객체 잠금, 수명 주기 정책 (★★★) ]]></title>
            <description><![CDATA[✅ S3 버전 관리 S3에 같은 이름의 파일을 중복해서 업로드하면, 아무런 알림 없이 파일을 덮어써버린다. 즉, 기존 파일이 삭제된다. 따라서 같은 이름의 파일을 업로드하더라도 기존 파일이 삭제되지 않게 만드려면 ‘버전 관리’ 기능을 활성화시켜야 한다]]></description>
            <link>https://www.jscode.kr/blog/s3-versioning-object-lock-lifecycle</link>
            <guid isPermaLink="false">s3-versioning-object-lock-lifecycle</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 07:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[프롤로그 : 왜 나만의 웹사이트를 만들어야 하는가]]></title>
            <description><![CDATA[프롤로그: 왜 나만의 웹사이트를 만들어야 하는가 요즘은  ‘자동화 수익’을 가르친다는 강의가 넘쳐납니다. 애드센스 블로그, 워드프레스, 노코드 플랫폼… 하지만 그 대부분은 ‘자동화’라는 이름을 붙였을 뿐이지 트렌디한 키워드를 찾아서 글을 매일 올려야 ]]></description>
            <link>https://www.jscode.kr/blog/adsense-with-ai-prologue</link>
            <guid isPermaLink="false">adsense-with-ai-prologue</guid>
            <dc:creator><![CDATA[JSCODE 모던크루소]]></dc:creator>
            <pubDate>Tue, 30 Dec 2025 02:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[개인 서버에 Docker Registry 직접 구축해서 사용하기]]></title>
            <description><![CDATA[Docker 이미지를 저장하는 대표적인 Registry는 Docker Hub이다.
하지만 Docker Hub의 프라이빗 이미지 기능을 사용하려면 비용이 발생한다. (1개까지는 무료이지만…) 따라서 비용 없이 프라이빗 이미지를 관리하기 위해 자체 Doc]]></description>
            <link>https://www.jscode.kr/blog/setup-docker-registry-in-home-server</link>
            <guid isPermaLink="false">setup-docker-registry-in-home-server</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 09 Dec 2025 21:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[공식문서 보고 Ubuntu에 Docker 설치하기]]></title>
            <description><![CDATA[Docker를 최신 방식으로 정확하게 설치하고 싶다면 공식 문서를 보고 설치하면 된다. 공식 문서를 보고 Ubuntu에 Docker를 설치해보자. 1. 공식 문서의 설치 방법 페이지 들어가기 2. 공식 문서에서 설치 관련 목차 찾기 Install us]]></description>
            <link>https://www.jscode.kr/blog/install-docker-in-ubuntu-watching-official-docs</link>
            <guid isPermaLink="false">install-docker-in-ubuntu-watching-official-docs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 07 Dec 2025 06:43:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[미션] AWS에 MSA 프로젝트 배포하기 ]]></title>
            <description><![CDATA[✅ AWS에 MSA 프로젝트 배포하기 현재까지 아래와 같은 구성으로 MSA 프로젝트를 구성했다. 이 MSA 구성을 클라우드 환경인 AWS에 배포하는 것까지 해보는 걸 추천한다. AWS로 서버를 배포해본 적이 있다면 충분히 구현할 수 있을 것이다. ✅ ]]></description>
            <link>https://www.jscode.kr/blog/mission-deploy-msa-on-aws</link>
            <guid isPermaLink="false">mission-deploy-msa-on-aws</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:17:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[참고] 완성 프로젝트 Github 주소 ]]></title>
            <link>https://www.jscode.kr/blog/reference-complete-project-github</link>
            <guid isPermaLink="false">reference-complete-project-github</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:17:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA는 꼭 쿠버네티스로 배포해야 할까? ]]></title>
            <description><![CDATA[✅ MSA는 꼭 쿠버네티스로 배포해야 할까? 마이크로서비스의 개수가 3~5개 정도로 작을 때는 굳이 쿠버네티스를 안 써도 된다. 오히려 쿠버네티스를 쓰는 게 오버스펙인 경우가 많다. MSA 구조를 도입한 회사들 중에서 쿠버네티스(EKS)를 사용하지 않]]></description>
            <link>https://www.jscode.kr/blog/is-kubernetes-required-for-msa</link>
            <guid isPermaLink="false">is-kubernetes-required-for-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:17:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 사용자 활동 점수 적립 API 만들기 ]]></title>
            <description><![CDATA[✅ 구조 게시글 작성 API에서 사용할 활동 점수 적립 API를 만들어보자. ✅ 사용자 활동 점수 적립 API 만들기 user-service에서 코드 작성하기 User 엔티티 수정하기 Controller 만들기 Service 만들기 서버 다시 실행시키]]></description>
            <link>https://www.jscode.kr/blog/practice-create-activity-score-api</link>
            <guid isPermaLink="false">practice-create-activity-score-api</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ‘포인트 차감 → 게시글 작성→ 활동 점수 적립’ 순으로 로직이 처리되도록 만들기]]></title>
            <description><![CDATA[✅ 구조 이 서비스는 게시글을 작성하려면 포인트가 필요한 서비스이다. 그래서 포인트 차감을 한 뒤에 게시글이 작성돼야 하고, 게시글 작성이 완료되면 사용자의 활동 점수가 적립되는 서비스이다. 아래 그림과 같이 작동하도록 코드를 작성해보자. ✅ 코드 작]]></description>
            <link>https://www.jscode.kr/blog/practice-point-deduction-post-creation-score</link>
            <guid isPermaLink="false">practice-point-deduction-post-creation-score</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[추가 요구사항 ]]></title>
            <description><![CDATA[✅ 추가 요구사항 회원가입 API 수정하기 게시글 작성 API 수정하기 ✅ 프로젝트 아키텍처 게시글을 작성하면 포인트를 적립할 수 있게 만들기 위해, MSA 구조에서 Point Service를 추가로 구축하자. 프로젝트의 심플함을 위해 Point Se]]></description>
            <link>https://www.jscode.kr/blog/more-requirements</link>
            <guid isPermaLink="false">more-requirements</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 작성 API에 Saga 패턴 적용시키기 - 2 ]]></title>
            <description><![CDATA[✅ 게시글 작성 API의 Saga 패턴이 잘 작동하는 지 테스트해보기 어떤 식으로 작동했는 지 추적하기 좋게 코드 추가하기 board-service 서버 다시 실행시키기 DB 데이터 정리하기 활동 점수 적립 API에 예외 코드 잘 있는 지 확인 게시글]]></description>
            <link>https://www.jscode.kr/blog/practice-apply-saga-to-post-create-2</link>
            <guid isPermaLink="false">practice-apply-saga-to-post-create-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Saga 패턴이란? / 보상 트랜잭션이란? ]]></title>
            <description><![CDATA[✅ Saga 패턴이란? MSA 환경에서의 트랜잭션을 처리할 때 사용하는 패턴 중 하나가 Saga 패턴이다. Saga 패턴은 보상 트랜잭션을 활용해 ‘여러 작업을 하나의 트랜잭션으로 묶은 것’처럼 작동시키는 방식이다. ✅ 보상 트랜잭션이란? 보상 트랜잭]]></description>
            <link>https://www.jscode.kr/blog/what-is-saga-pattern-and-compensation</link>
            <guid isPermaLink="false">what-is-saga-pattern-and-compensation</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA 환경에서 언제 메시징 기반(비동기 방식)으로 통신하면 좋을까? ]]></title>
            <description><![CDATA[MSA 환경에서는 마이크로서비스끼리 통신을 해야 한다. 이 때, 통신 방식은 크게 동기와 비동기 방식으로 나뉜다. 이전까지 프로젝트에서 사용했던 REST API 기반의 통신 방식이 대표적인 동기 통신 방식이 있다. 그리고 Kafka와 같은 메시지 큐를]]></description>
            <link>https://www.jscode.kr/blog/when-to-use-async-messaging-in-msa</link>
            <guid isPermaLink="false">when-to-use-async-messaging-in-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] API Gateway를 활용해 클라이언트가 접근할 API 제한하기 ]]></title>
            <description><![CDATA[✅ API Gateway를 활용해 클라이언트가 접근할 API 제한하기 이전 강의에서 클라이언트가 사용하는 외부용 API와 마이크로서비스 내부에서만 사용하는 내부용 API를 분리했다. 이 구성에서 클라이언트는 내부용 API에 접근할 수 없게 막아야 한다]]></description>
            <link>https://www.jscode.kr/blog/practice-restrict-access-with-gateway</link>
            <guid isPermaLink="false">practice-restrict-access-with-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[참고] Saga 패턴을 구현할 때 고려해야 할 요소 (멱등성, 동시성 이슈 등) ]]></title>
            <description><![CDATA[✅ Saga 패턴을 구현할 때 고려해야 할 요소 (멱등성, 동시성 이슈, 시맨틱 락) 지금까지 Saga 패턴의 개념을 이해하고 Saga 패턴을 직접 구현해봤다. 하지만 Saga 패턴을 더 꼼꼼하고 완벽하게 구현하려면 고려해야 하는 요소들이 훨씬 많다.]]></description>
            <link>https://www.jscode.kr/blog/considerations-for-saga-implementation</link>
            <guid isPermaLink="false">considerations-for-saga-implementation</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 특정 게시글 조회 API 만들기 ]]></title>
            <description><![CDATA[✅ 특정 게시글 조회 API 만들기 board-service에서 아래 코드 작성하기 Response DTO 만들기 user-service의 API와 통신할 코드 작성하기 Service 로직 작성하기 Controller 로직 작성하기 서버 재실행시킨 후]]></description>
            <link>https://www.jscode.kr/blog/practice-create-post-lookup-api</link>
            <guid isPermaLink="false">practice-create-post-lookup-api</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Point Microservice 만들기 - 2 ]]></title>
            <description><![CDATA[✅ Spring Boot 프로젝트 셋팅 & DB 연결 Spring Boot 프로젝트 셋팅 application.yml 작성하기 Spring Boot 서버 실행시켜서 DB 연결 제대로 되는 지 확인하기 ✅ 포인트 적립 API 만들기 Point 엔티티 생]]></description>
            <link>https://www.jscode.kr/blog/practice-create-point-microservice-2</link>
            <guid isPermaLink="false">practice-create-point-microservice-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 특정 서비스가 장애났을 때, 장애가 전파되지 않게 방어 코드 작성하기]]></title>
            <description><![CDATA[✅ 장애 전파 방어 코드 작성하지 않으면 어떻게 되는 지 테스트하기 user-service 서버 종료시키기 게시글 조회 API로 요청 보내기 ✅ 장애 전파 방지 전략 User Service가 장애가 나더라도 Board Service의 게시글 조회 AP]]></description>
            <link>https://www.jscode.kr/blog/practice-implement-failure-protection</link>
            <guid isPermaLink="false">practice-implement-failure-protection</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Point Microservice 만들기 - 1 ]]></title>
            <description><![CDATA[✅ Point Microservice가 사용할 DB 띄우기 MySQL 서버 띄우기 GUI 툴로 MySQL 접근 되는 지 확인하기 데이터베이스 생성하기]]></description>
            <link>https://www.jscode.kr/blog/practice-create-point-microservice-1</link>
            <guid isPermaLink="false">practice-create-point-microservice-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[API Gateway란? ]]></title>
            <description><![CDATA[✅ API Gateway란? 우선 Gateway라는 의미를 먼저 알아보자. Gateway는 네트워크 상에서 다른 네트워크로 들어가는 입구 역할을 하는 지점을 의미한다. 그럼 API Gateway의 뜻은 뭘까? API Gateway는 클라이언트(웹, 모]]></description>
            <link>https://www.jscode.kr/blog/what-is-api-gateway</link>
            <guid isPermaLink="false">what-is-api-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[게시글 작성 API 로직 수행 중, 중간에 에러가 발생하면 어떻게 될까? ]]></title>
            <description><![CDATA[✅ 게시글 작성 API 로직 수행 중, 중간에 에러가 발생하면 어떻게 될까? 게시글 작성 API 로직이 ‘포인트 차감 → 게시글 저장 → 활동 점수 적립’ 구성으로 이루어져 있다. ‘포인트 차감, 게시글 저장, 활동 점수 적립’은 기획상 하나로 묶인 ]]></description>
            <link>https://www.jscode.kr/blog/error-handling-in-post-creation</link>
            <guid isPermaLink="false">error-handling-in-post-creation</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Cloud Gateway 셋팅하기 / 라우팅 설정하기 ]]></title>
            <description><![CDATA[✅ Spring Cloud Gateway 서버 기본 셋팅하기 / 라우팅 설정하기 Spring Boot 프로젝트 셋팅 application.yml 작성하기 요청이 잘 라우팅되는 지 테스트해보기]]></description>
            <link>https://www.jscode.kr/blog/practice-setup-spring-cloud-gateway</link>
            <guid isPermaLink="false">practice-setup-spring-cloud-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 사용자 서비스에서 Kafka로 ‘회원가입 완료 이벤트’ 발행하기 ]]></title>
            <description><![CDATA[✅ 사용자 서비스에서 Kafka로 ‘회원가입 완료 이벤트’ 발행하기 게시글 서비스에서 사용해야 하는 사용자 데이터(user_id, name)를 동기화하기 위해서, 사용자 서비스에서 user_id, name의 데이터가 생성/변경/삭제가 될 때마다 카프카]]></description>
            <link>https://www.jscode.kr/blog/practice-publish-signup-event</link>
            <guid isPermaLink="false">practice-publish-signup-event</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 전체 조회 API 만들기 - 1]]></title>
            <description><![CDATA[✅ 설계 [게시글 전체 조회 API] 위 요구사항에 따라 게시글 전체 조회 API를 만들려면 게시글의 개수만큼 사용자 정보를 조회해와야 한다. 즉, 10개의 게시글을 조회해서 응답하려면 각 게시글의 사용자 정보가 필요하므로 사용자 정보 조회 API를 ]]></description>
            <link>https://www.jscode.kr/blog/practice-get-all-posts-1</link>
            <guid isPermaLink="false">practice-get-all-posts-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 사용자 서비스에서 Kafka로부터 ‘게시글 작성 완료 이벤트’ 구독하기 ]]></title>
            <description><![CDATA[✅ 사용자 서비스에서 Kafka로부터 ‘게시글 작성 완료 이벤트’ 구독하기 사용자 서비스에 Kafka 의존성 추가하기 application.yml에 Kafka 연결을 위한 정보 작성하기 Kafka로부터 전달받을 메시지 객체 만들기 Kafka에 있는 메]]></description>
            <link>https://www.jscode.kr/blog/practice-consume-post-created-event</link>
            <guid isPermaLink="false">practice-consume-post-created-event</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[사전 필요 지식 ]]></title>
            <description><![CDATA[✅ 참고 이전 섹션에서 데이터 생성 및 변경을 처리할 때, 여러 마이크로 서비스를 거쳐서 통신을 해야 하는 Case를 경험했다. 그리고 여러 마이크로 서비스를 거쳐서 처리하는 여러 작업을 하나의 트랜잭션처럼 묶기 위해서 Saga 패턴을 활용해서 코드를]]></description>
            <link>https://www.jscode.kr/blog/prerequisites</link>
            <guid isPermaLink="false">prerequisites</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ‘외부용 API’와 ‘마이크로서비스간 통신용 API’ 구분하기 ]]></title>
            <description><![CDATA[✅ ‘외부용 API’와 ‘마이크로서비스간 통신용 API’ 구분하기 현재까지 프로젝트에서 아래의 API를 구현했다. [사용자 서비스] 회원가입 (POST /users/sign-up) - 외부용 API 특정 사용자 정보 조회 (GET /users/{use]]></description>
            <link>https://www.jscode.kr/blog/practice-separate-public-and-internal-apis</link>
            <guid isPermaLink="false">practice-separate-public-and-internal-apis</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 잘 작동하는 지 테스트하기 ]]></title>
            <description><![CDATA[✅ 잘 작동하는 지 테스트하기 테스트 전에 DB 데이터 정리하기 API 요청 보내기 성공적으로 잘 처리했는 지 DB 확인하기 ✅ 정리하기 설계했던 대로 사용자가 게시글 작성 API에 요청을 보냈을 때 ‘포인트 차감 → 게시글 작성’ 로직까지만 처리하고]]></description>
            <link>https://www.jscode.kr/blog/practice-test-events</link>
            <guid isPermaLink="false">practice-test-events</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[추가 요구사항 ]]></title>
            <description><![CDATA[✅ 구현할 기능 특정 게시글 조회 API 게시글 전체 조회 API]]></description>
            <link>https://www.jscode.kr/blog/additional-requirements</link>
            <guid isPermaLink="false">additional-requirements</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 서비스에서 Kafka로부터 ‘회원가입 완료 이벤트’ 구독하기 ]]></title>
            <description><![CDATA[✅ 게시글 서비스에서 Kafka로부터 ‘회원가입 완료 이벤트’ 구독하기 board-service에서 아래 코드 작성하기 User 엔티티 만들기 UserRepository 만들기 사용자 정보 저장 Service 로직 만들기 application.yml에]]></description>
            <link>https://www.jscode.kr/blog/practice-consume-signup-event</link>
            <guid isPermaLink="false">practice-consume-signup-event</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[‘데이터 동기화’를 활용한 게시글 조회 API 최적화하기 ]]></title>
            <description><![CDATA[✅ ‘데이터 동기화’를 활용한 게시글 조회 API 최적화하기 ‘게시글 조회 로직’을 구현할 때 위의 방식처럼 구현했었다. 위의 방식도 충분히 괜찮은 방식이지만, 게시글 조회 로직의 트래픽이 점차 증가하면서 사용자 서비스의 ‘사용자 DB’에 부담을 줄 ]]></description>
            <link>https://www.jscode.kr/blog/optimize-post-query-using-data-sync</link>
            <guid isPermaLink="false">optimize-post-query-using-data-sync</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[어떻게 구현할 지 설계하기 ]]></title>
            <description><![CDATA[✅ 어떻게 구현할 지 설계하기 이전 강의에서 아래와 같이 메시징 기반의 비동기 방식으로 통신을 해도 괜찮다고 설명을 했었다. 사용자가 게시글 작성 API에 요청을 보냈을 때, ‘포인트 차감 → 게시글 작성’ 로직까지만 확실하게 작동한 걸 확인하고 성공]]></description>
            <link>https://www.jscode.kr/blog/design-how-to-implement</link>
            <guid isPermaLink="false">design-how-to-implement</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[프로젝트의 모든 API 잘 작동하는 지 테스트하기 ]]></title>
            <description><![CDATA[✅ 프로젝트의 모든 API 잘 작동하는 지 테스트하기 현재까지 아래의 기능들을 구현해왔다. 잘 작동하는 지 전부 테스트해보자. 회원가입 API → 포인트 적립 로그인 API → JWT 토큰 발급 게시글 작성 API (JWT 토큰 검증) → 포인트 차감]]></description>
            <link>https://www.jscode.kr/blog/test-all-apis</link>
            <guid isPermaLink="false">test-all-apis</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 작성 API에 Saga 패턴 적용시키기 - 1 ]]></title>
            <description><![CDATA[✅ 게시글 작성 API에 Saga 패턴 적용시키기 아래 구조처럼 기존 게시글 작성 API에 Saga 패턴을 적용시켜보자. ‘게시글 작성 API’ 기존 로직의 문제점 확인하기 @Transactional 코드 제거하고, ‘게시글 저장’에 대한 보상 트랜잭]]></description>
            <link>https://www.jscode.kr/blog/practice-apply-saga-to-post-create-1</link>
            <guid isPermaLink="false">practice-apply-saga-to-post-create-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 회원 가입하면 포인트가 적립되도록 만들기 ]]></title>
            <description><![CDATA[✅ 구조 아래 그림과 같이 회원 가입을 하면 포인트가 적립되도록 코드를 작성해보자. ✅ 코드 작성하기 user-service에서 아래 코드 작성하기 PointClient 코드 작성하기 Service 코드 작성하기 서버 다시 실행시키기 서버 실행시켜서 ]]></description>
            <link>https://www.jscode.kr/blog/practice-earn-points-on-signup</link>
            <guid isPermaLink="false">practice-earn-points-on-signup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 서비스에서 Kafka로 ‘게시글 작성 완료 이벤트’ 발행하기 ]]></title>
            <description><![CDATA[✅ 게시글 서비스에 Kafka 연결하기 Docker로 Kafka 띄우기 게시글 서비스에 Kafka 의존성 추가하기 application.yml에 Kafka 연결을 위한 정보 작성하기 Kafka로 전달할 메시지 객체 만들기 게시글 작성을 완료하는 대로 ]]></description>
            <link>https://www.jscode.kr/blog/practice-publish-post-created-event</link>
            <guid isPermaLink="false">practice-publish-post-created-event</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 사용자 서비스에 로그인 API 구현하기 ]]></title>
            <description><![CDATA[✅ 사용자 서비스에 로그인 API 구현하기 DTO 구현하기 Controller 로직 구현하기 Service 로직 구현하기 JWT 의존성 추가하기 JWT 로직 추가하기 서버 다시 실행시키기 API 테스트 해보기]]></description>
            <link>https://www.jscode.kr/blog/practice-implement-login-api</link>
            <guid isPermaLink="false">practice-implement-login-api</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 전체 조회 API 만들기 - 2 ]]></title>
            <description><![CDATA[✅ 게시글 전체 조회 API 만들기 board-service에서 아래 코드 작성하기 UserClient 로직 작성하기 Service 로직 작성하기 Controller 로직 작성하기 user-service, board-service 서버 실행시키기 테스]]></description>
            <link>https://www.jscode.kr/blog/practice-get-all-posts-2</link>
            <guid isPermaLink="false">practice-get-all-posts-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA에서 ‘인증 로직’ 구현하는 방법 ]]></title>
            <description><![CDATA[✅ MSA에서의 API 인증(Authentication) 지금까지 구현한 프로젝트는 ‘인증(Authentication)’을 신경쓰지 않고 구현했다. 하지만 해당 프로젝트에서 악의적으로 다른 사용자인척 게시글을 작성하는 일이 발생하면 안 된다. 따라서 ]]></description>
            <link>https://www.jscode.kr/blog/msa-authentication-strategy</link>
            <guid isPermaLink="false">msa-authentication-strategy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 잘 작동하는 지 테스트하기 ]]></title>
            <description><![CDATA[✅ 잘 작동하는 지 테스트하기 테스트 전에 DB 데이터 정리하기 API 요청 보내기 성공적으로 잘 처리했는 지 DB 확인하기 ✅ 정리하기 사용자(클라이언트)가 회원가입 API 요청 사용자 서비스의 users DB에 사용자 정보 저장 Kafka에 회원가]]></description>
            <link>https://www.jscode.kr/blog/practice-test-signup-sync</link>
            <guid isPermaLink="false">practice-test-signup-sync</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 다른 마이크로서비스가 사용할 ‘사용자 조회 API’ 만들기 ]]></title>
            <description><![CDATA[✅ 게시글 조회 API를 구현하려면, 사용자 조회 API도 만들어야 하는 이유 [게시글 조회 API의 응답값] {
  "boardId": 1,
  "title": "제목",
  "content": "내용"
  "user": {
    "userId":]]></description>
            <link>https://www.jscode.kr/blog/practice-create-user-lookup-api</link>
            <guid isPermaLink="false">practice-create-user-lookup-api</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[특정 서비스가 장애났을 때, 장애가 전파되지 않게 막는 방법 ]]></title>
            <description><![CDATA[✅ 특정 서비스가 장애났을 때, 장애가 전파되지 않게 막는 방법 위와 같은 구조에서 사용자 서비스의 서버 또는 DB에 장애가 났다고 가정하자. 그럼 게시글 조회 API도 정상적으로 작동하지 않을 것이다. 왜냐하면 게시글 조회 로직에는 사용자 서비스로부]]></description>
            <link>https://www.jscode.kr/blog/prevent-failure-propagation</link>
            <guid isPermaLink="false">prevent-failure-propagation</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] API Gateway에 JWT 인증 로직 구현하기 (]]></title>
            <description><![CDATA[✅ 설계 API Gateway로 들어오는 요청에 대해 비즈니스 로직을 처리할 수 있는 Filter 기능을 가지고 있다. 그래서 이 Filter 기능을 활용해 아래와 같이 JWT 인증 로직을 구현하고자 한다. ✅ API Gateway에 JWT 인증 로직]]></description>
            <link>https://www.jscode.kr/blog/practice-jwt-on-api-gateway</link>
            <guid isPermaLink="false">practice-jwt-on-api-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 조회 로직 최적화하기 (]]></title>
            <description><![CDATA[✅ 게시글 조회 로직 최적화하기 board-service에서 아래 코드 작성하기 Board 엔티티에 연관 관계 매핑하기 게시글 조회 로직 수정하기 컨트롤러 로직 바꾸기 서버 다시 실행시키기 테스트를 위해 게시글 데이터 2개 넣기 API 테스트 해보기]]></description>
            <link>https://www.jscode.kr/blog/practice-optimize-post-query</link>
            <guid isPermaLink="false">practice-optimize-post-query</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA 환경에서의 트랜잭션 처리 방법 ]]></title>
            <description><![CDATA[✅ MSA 환경에서의 트랜잭션 처리 방법 모놀리식 아키텍처와 달리 MSA 환경에서는 서비스마다 DB가 분리되어 있다. 그래서 서로 다른 DB에서 처리하는 여러 작업을 하나의 트랜잭션으로 묶을 수 없다. 그래서 MSA 환경에서는 이런 문제점을 해결하기 ]]></description>
            <link>https://www.jscode.kr/blog/transaction-handling-in-msa</link>
            <guid isPermaLink="false">transaction-handling-in-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[데이터 조회 기능 구현 방식 (모놀리식 vs MSA) ]]></title>
            <description><![CDATA[요구사항에 따르면 게시글 조회 API를 아래와 같이 응답하게 구현해야 한다. ✅ ’모놀리식 아키텍처’에서 데이터 조회 기능 구현 방식 모놀리식 아키텍처에서는 하나의 DB에 사용자 정보와 게시글 정보가 한꺼번에 저장되어 있기 때문에 아래와 같이 SQL문]]></description>
            <link>https://www.jscode.kr/blog/data-fetch-strategy-monolithic-vs-msa</link>
            <guid isPermaLink="false">data-fetch-strategy-monolithic-vs-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 게시글 작성 로직 수정하기]]></title>
            <description><![CDATA[✅ 게시글 작성 로직 수정하기 현재 게시글 작성 API는 Request Body에 포함된 userId 값을 기반으로 로직을 처리하고 있다. 하지만 이 방식은 클라이언트가 임의로 다른 사용자의 userId를 입력해 악의적인 요청을 보낼 수 있다는 보안 ]]></description>
            <link>https://www.jscode.kr/blog/practice-modify-post-create-logic</link>
            <guid isPermaLink="false">practice-modify-post-create-logic</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Eventual Consistency(최종적 일관성)이란? ]]></title>
            <description><![CDATA[✅ Eventual Consistency(최종적 일관성)이란? MSA 환경에서 Saga 패턴을 기반으로 로직을 처리하다보면 어쩔 수 없이 데이터 일관성이 잠깐동안 깨지는 순간이 발생한다. 이 현상을 눈으로 확인하기 위해 코드를 일부 수정해보자. 활동 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-eventual-consistency</link>
            <guid isPermaLink="false">what-is-eventual-consistency</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 프로젝트 구조에 맞게 Kafka 셋팅하기 ]]></title>
            <description><![CDATA[✅ 프로젝트 구조에 맞게 Kafka 셋팅하기 Kafka랑 연결되어 있는 Spring Boot 서버 종료하기 기존에 셋팅해뒀던 카프카 서버 3대를 백그라운드에서 실행시키기 기존에 생성되어 있던 토픽 삭제하기 토픽 생성하기 DLT 토픽 생성하기 3개의 k]]></description>
            <link>https://www.jscode.kr/blog/practice-kafka-config-for-project</link>
            <guid isPermaLink="false">practice-kafka-config-for-project</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Board Microservice 만들기 ]]></title>
            <description><![CDATA[✅ Board Microservice 만들기 User Service는 만들었으니 마지막으로 남은 Board Service를 만들어보자. ✅ Spring Boot 프로젝트 셋팅 & DB 연결 Spring Boot 프로젝트 셋팅 application.ym]]></description>
            <link>https://www.jscode.kr/blog/practice-create-board-microservice</link>
            <guid isPermaLink="false">practice-create-board-microservice</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 각 Microservice에 해당하는 DB 서버 띄우기 ]]></title>
            <description><![CDATA[✅ 각 Microservice에 해당하는 DB 서버 띄우기 아래 아키텍처 구조에 맞게 Docker로 MySQL 서버 2대를 띄워주자. MySQL 서버 2대 띄우기 GUI 툴로 MySQL 접근되는 지 확인하기 데이터베이스 생성하기]]></description>
            <link>https://www.jscode.kr/blog/practice-start-db-for-each-microservice</link>
            <guid isPermaLink="false">practice-start-db-for-each-microservice</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[많은 사람들이 MSA가 어렵다고 착각하는 이유 ]]></title>
            <description><![CDATA[✅ 많은 사람들이 MSA가 어렵다고 착각하는 이유 많은 분들이 MSA를 잘못 오해하고 있는 경우가 너무 많다. 가장 대표적으로 오해하는 게 MSA 구조로 구축하려면 거창하고 복잡한 무언가를 도입해야 한다고 잘못 알고 있다. 구체적인 Case를 살펴보자]]></description>
            <link>https://www.jscode.kr/blog/why-people-think-msa-is-hard</link>
            <guid isPermaLink="false">why-people-think-msa-is-hard</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[구현한 MSA 프로젝트를 잘 구현했는 지 전체적으로 검토하기 ]]></title>
            <description><![CDATA[✅ 구현할 기능 회원가입 API 게시글 작성 API ✅ 프로젝트 아키텍처 ✅ DB 설계]]></description>
            <link>https://www.jscode.kr/blog/review-completed-msa-project</link>
            <guid isPermaLink="false">review-completed-msa-project</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 회원 가입 비즈니스 로직 짜기 ]]></title>
            <description><![CDATA[✅ 회원 가입 비즈니스 로직 짜기 회원 가입한 사용자 정보 DB에 저장하기 Kafka에 전송할 메시지 객체 만들기 Json 형태의 String으로 만들어 주는 함수 추가하기 Kafka에 메시지 보내는 로직 추가하기 ✅ 중간 체크 전체 프로젝트 구조에서]]></description>
            <link>https://www.jscode.kr/blog/practice-implement-signup-logic</link>
            <guid isPermaLink="false">practice-implement-signup-logic</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] User Microservice 만들기 ]]></title>
            <description><![CDATA[✅ User Microservice 만들기 DB까지는 셋팅을 했으니 아래 구조에 맞게 User Service를 만들어보자. ✅ Spring Boot 프로젝트 셋팅 & DB 연결 Spring Boot 프로젝트 셋팅 application.yml 작성하기 ]]></description>
            <link>https://www.jscode.kr/blog/practice-create-user-microservice</link>
            <guid isPermaLink="false">practice-create-user-microservice</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 회원가입 API 전체 뼈대 만들기 ]]></title>
            <description><![CDATA[✅ 회원가입 API 만들기 User 엔티티 생성하기 UserRepository 만들기 Controller 만들기 RequestDto 만들기 Service 만들기]]></description>
            <link>https://www.jscode.kr/blog/practice-create-signup-api</link>
            <guid isPermaLink="false">practice-create-signup-api</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA의 핵심 특징 / MSA의 독보적인 장점 ]]></title>
            <description><![CDATA[✅ MSA의 핵심 특징 MSA는 다양한 특징을 가지고 있다. 그 중에서 가장 핵심 특징은 독립성이다. 아래 그림을 보면 결제에 관련된 기능, 인증에 관련된 기능, 상품에 관련된 기능을 독립적으로 분리해서 프로젝트를 구성했다. 이게 바로 MSA의 방식대]]></description>
            <link>https://www.jscode.kr/blog/msa-core-features-and-advantages</link>
            <guid isPermaLink="false">msa-core-features-and-advantages</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA인지 아닌지를 판단하는 기준 ]]></title>
            <description><![CDATA[✅ MSA인지 아닌지를 판단하는 기준 MSA인지 아닌지를 판단하는 ‘명확한’ 기준이라는 게 없다. 왜냐하면 MSA라는 개념이 어떤 개인이나 단체가 정의한 개념이 아니다. 그냥 서로 입소문으로 퍼진 개념 중 하나이다. 한 마디로 ‘특정 기준을 만족시켜야]]></description>
            <link>https://www.jscode.kr/blog/criteria-to-determine-msa</link>
            <guid isPermaLink="false">criteria-to-determine-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 이메일 발송을 처리할 Consumer 로직 짜기 ]]></title>
            <description><![CDATA[✅ 이메일 발송을 처리할 Consumer 로직 짜기 Kafka의 메시지를 가져와 담을 객체 만들기 Consumer 로직 작성하기 이메일 발송 로그를 남기기 위한 엔티티, 레포지토리 생성하기 Consumer 로직 보완하기 DLT로 빠지는 메시지 처리하는]]></description>
            <link>https://www.jscode.kr/blog/practice-email-consumer-logic</link>
            <guid isPermaLink="false">practice-email-consumer-logic</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 UserService 서버 초기 환경 설정하기 ]]></title>
            <description><![CDATA[✅ Spring Boot로 UserService 서버 초기 환경 설정하기 Spring Boot 프로젝트 셋팅 application.yml에 Kafka 연결을 위한 정보 작성하기 application.yml에 H2 데이터베이스 연결을 위한 정보 작성하기]]></description>
            <link>https://www.jscode.kr/blog/practice-setup-userservice</link>
            <guid isPermaLink="false">practice-setup-userservice</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 잘 작동하는 지 테스트해보기 ]]></title>
            <description><![CDATA[✅ 잘 작동하는 지 테스트해보기 User Service, Email Service 서버 실행하기 API 요청 보내보기 EmailService 로그 확인하기 DB 조회해보기 ✅ 정리 이번 프로젝트를 통해 MSA 구조에서 Kafka를 활용해볼 수 있었다.]]></description>
            <link>https://www.jscode.kr/blog/practice-test-project</link>
            <guid isPermaLink="false">practice-test-project</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[언제 MSA를 도입하는 게 적절할까? ]]></title>
            <description><![CDATA[MSA를 언제 도입하는 게 적절한 지 파악하기 위해, 기존에 글로벌 기업들이 어떤 상황에서 MSA를 도입했는 지 사례를 몇 가지 살펴보자. ✅ MSA 도입 사례 여러 기업들은 다양한 나름의 이유를 기반으로 MSA를 도입했다. 유명한 글로벌 기업들의 M]]></description>
            <link>https://www.jscode.kr/blog/when-to-adopt-msa</link>
            <guid isPermaLink="false">when-to-adopt-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA를 쉽고 빠르게 배우는 방법 ]]></title>
            <description><![CDATA[✅ MSA를 쉽고 빠르게 배우는 방법 MSA를 쉽고 빠르게 배우려면 딱 3가지 법칙을 지키면 된다. 원씽(One Thing) 법칙 : 낯선 개념들을 한꺼번에 다 적용시키려는 욕심을 버려야 한다. 플레이그라운드(Playground) 법칙 : 연습할 수 ]]></description>
            <link>https://www.jscode.kr/blog/how-to-learn-msa-fast</link>
            <guid isPermaLink="false">how-to-learn-msa-fast</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 EmailService 서버 초기 환경 설정하기 ]]></title>
            <description><![CDATA[✅ Spring Boot로 EmailService 서버 초기 환경 설정하기 Spring Boot 프로젝트 셋팅 application.yml에 Kafka 연결을 위한 정보 작성하기 application.yml에 H2 데이터베이스 연결을 위한 정보 작성하]]></description>
            <link>https://www.jscode.kr/blog/practice-setup-emailservice</link>
            <guid isPermaLink="false">practice-setup-emailservice</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA(Microservice Architecture)란? ]]></title>
            <description><![CDATA[✅ MSA(Microservice Architecture)란? MSA의 의미를 검색해보면 아래와 같이 나온다. 하나의 큰 애플리케이션을 여러 개의 작고 독립적인 서비스로 나누어 개발하고 배포하는 소프트웨어 개발 아키텍처를 의미한다. 아래 그림을 보면서]]></description>
            <link>https://www.jscode.kr/blog/what-is-msa</link>
            <guid isPermaLink="false">what-is-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[프로젝트 설계 ]]></title>
            <description><![CDATA[강의 초반에 Kafka는 MSA의 구조에서 많이 사용한다고 했다. MSA 구조에서 어떤 식으로 Kafka를 사용하는 지 빠르게 경험할 수 있게, 정말 간단한 MSA 프로젝트를 만들어보자. ✅ 구현할 기능 회원 가입을 하면 회원가입 축하 이메일 발송하게]]></description>
            <link>https://www.jscode.kr/blog/project-design-in-kafka-course</link>
            <guid isPermaLink="false">project-design-in-kafka-course</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA를 왜 배워야할까? ]]></title>
            <description><![CDATA[✅ MSA를 왜 배워야할까? 최근에 MSA를 배우려는 취준생 개발자분들이나 현업 개발자분들이 시간이 갈수록 점점 많아지고 있다. 이 분들이 MSA를 배우려는 이유는 다음과 같다. 어느 정도 규모가 있는 서비스 기업에 취업/이직을 하기 위해서 그럼 규모]]></description>
            <link>https://www.jscode.kr/blog/why-learn-msa</link>
            <guid isPermaLink="false">why-learn-msa</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MSA 프로젝트 요구사항 및 설계 ]]></title>
            <description><![CDATA[스몰 스타트 법칙(최대한 작은 규모의 프로젝트에서 연습)에 따라, 최소한의 기능을 가진 프로젝트에서 MSA 방식으로 구축하는 연습을 해보자. ✅ 구현할 기능 회원가입 API 게시글 작성 API ✅ 프로젝트 아키텍처 User Service에 회원가입 A]]></description>
            <link>https://www.jscode.kr/blog/msa-project-requirements-and-design</link>
            <guid isPermaLink="false">msa-project-requirements-and-design</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:15:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[메시지를 어디까지 읽었는 지 기억하고, 그 다음 메시지부터 처리하기 (Consumer Group, Offset) ]]></title>
            <description><![CDATA[✅ 메시지를 어디까지 읽었는 지 기억하고, 그 다음 메시지부터 처리하기 Kafka에서 컨슈머 그룹(Consumer Group)이라는 개념을 활용하면, 각 컨슈머 그룹(Consumer Group)이 어디까지 메시지를 읽었는지를 오프셋(offset)이라는]]></description>
            <link>https://www.jscode.kr/blog/consumer-group-and-offset</link>
            <guid isPermaLink="false">consumer-group-and-offset</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kafka에 메시지 넣기 / Kafka에서 메시지 조회하기 ]]></title>
            <description><![CDATA[✅ Kafka에 메시지 넣기 Producer가 Kafka로 메시지를 보내는 역할을 한다고 했다. Producer를 대신해 CLI 명령어를 활용해 Kafka에 메시지를 넣어보자. 토픽 생성 Kafka의 특정 토픽에 메시지 넣기 아무런 에러가 뜨지 않았다]]></description>
            <link>https://www.jscode.kr/blog/produce-consume-messages</link>
            <guid isPermaLink="false">produce-consume-messages</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kafka의 기본 구성 (Topic, Consumer, Producer) ]]></title>
            <description><![CDATA[✅ Kafka의 기본 구성 (Topic, Consumer, Producer) Kafka의 기본 구성을 간단하게 표현하자면 아래 그림과 같다. 프로듀서(Producer) : 카프카에 메시지(데이터)를 전달하는 주체 컨슈머(Consumer) : 카프카의 ]]></description>
            <link>https://www.jscode.kr/blog/kafka-basics-topic-consumer-producer</link>
            <guid isPermaLink="false">kafka-basics-topic-consumer-producer</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 팔로워 파티션에 메시지를 넣으면 어떻게 될까?]]></title>
            <description><![CDATA[✅ 팔로워 파티션에 메시지를 넣으면 어떻게 될까? 이전 강의에서 리더 파티션과 팔로워 파티션을 설명할 때 아래와 같이 설명했다. 리더 파티션은 프로듀서나 컨슈머가 직접적으로 메시지를 쓰고 읽는 파티션이다. 반면에 팔로워 파티션은 프로듀서나 컨슈머가 직]]></description>
            <link>https://www.jscode.kr/blog/practice-produce-to-follower-partition</link>
            <guid isPermaLink="false">practice-produce-to-follower-partition</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kafka 설치할 환경 셋팅하기 (feat. EC2) ]]></title>
            <description><![CDATA[AWS에서 계정을 가입한 이후로부터 1년 동안 프리티어 혜택을 받을 수 있다. 강의에서 진행하는 실습은 프리티어 혜택 내에서 진행할 예정이기 때문에 비용이 거의 나가지 않을 것이다. ✅ EC2 인스턴스 생성하기 EC2 페이지 들어가기 리전 선택하기 인]]></description>
            <link>https://www.jscode.kr/blog/setup-environment-for-kafka-ec2</link>
            <guid isPermaLink="false">setup-environment-for-kafka-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 Kafka에 메시지 넣는 코드 작성하기 (Producer) ]]></title>
            <description><![CDATA[✅ Spring Boot로 Kafka에 메시지 넣는 코드 작성하기 위 그림과 같이 Spring Boot 서버를 활용해 Kafka에 메시지를 넣어보자. 사용자로부터 API 요청을 받을 Controller 만들기 Service 만들기 Kafka에 메시지를]]></description>
            <link>https://www.jscode.kr/blog/practice-producer-code-with-spring-boot</link>
            <guid isPermaLink="false">practice-producer-code-with-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[특정 토픽의 파티션 수 조회하기 / 설정하기 / 변경하기 ]]></title>
            <description><![CDATA[✅ 특정 토픽의 파티션 수 조회하기 토픽에 설정된 파티션 수를 조회하려면 이전에 배웠던 특정 토픽의 세부 정보 조회를 할 때 사용하는 명령어를 입력하면 된다. # 특정 토픽 세부 정보 조회
$ bin/kafka-topics.sh \
	--bootstr]]></description>
            <link>https://www.jscode.kr/blog/view-set-change-partition-count</link>
            <guid isPermaLink="false">view-set-change-partition-count</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Kafka 서버 3대가 서로 잘 연동됐는 지 확인하기 ]]></title>
            <description><![CDATA[✅ Kafka 서버 3대가 서로 잘 연동됐는 지 확인하기 Kafka 서버 3대가 서로 잘 연동됐는 지 확인하는 확실한 방법은, 아래와 같이 Kafka의 서버 개수만큼 토픽의 레플리케이션을 만들어보는 것이다. ✅ 실습 Producer, Consumer ]]></description>
            <link>https://www.jscode.kr/blog/practice-check-3-server-connection</link>
            <guid isPermaLink="false">practice-check-3-server-connection</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[컨슈머가 메시지를 하나씩만 처리하는 현상 ]]></title>
            <description><![CDATA[✅ Consumer가 메시지를 한 번에 하나씩만 처리하는 현상 API 요청 여러 번 보내보기 Consumer 서버의 로그 확인하기]]></description>
            <link>https://www.jscode.kr/blog/consumer-one-message-at-a-time</link>
            <guid isPermaLink="false">consumer-one-message-at-a-time</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot가 Kafka에 메시지 잘 넣는 지 테스트해보기 ]]></title>
            <description><![CDATA[✅ 깔끔한 테스트를 위해 기존에 생성되어 있는 Kafka 리소스 삭제하기 전체 토픽 조회하기 토픽 삭제하기 전체 컨슈머 그룹 조회하기 컨슈머 그룹 삭제하기 토픽 다시 생성하기 ✅ Spring Boot가 Kafka에 메시지 잘 넣는 지 테스트해보기 Sp]]></description>
            <link>https://www.jscode.kr/blog/practice-test-producer</link>
            <guid isPermaLink="false">practice-test-producer</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에서 하나의 컨슈머로 메시지 병렬적으로 처리하기 ]]></title>
            <description><![CDATA[✅ Spring Boot로 하나의 컨슈머로 메시지 병렬적으로 처리하기 하나의 컨슈머 서버만 실행시키기 컨슈머 서버의 코드 수정하기 컨슈머 서버 재실행시키기 API 요청 보내면서 컨슈머 서버 로그 확인하기 ✅ 그림으로 이해하기 하나의 컨슈머 서버에서 하]]></description>
            <link>https://www.jscode.kr/blog/practice-single-consumer-parallel-processing</link>
            <guid isPermaLink="false">practice-single-consumer-parallel-processing</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 여러 개의 파티션에 메시지가 골고루 들어가는 지 확인해보기 ]]></title>
            <description><![CDATA[✅ 여러 개의 파티션에 메시지가 골고루 들어가는 지 확인해보기 이전 강의에서 특정 토픽에 메시지를 넣으면 여러 파티션에 메시지가 적절하게 분산된다고 했다. 이 때, 메시지의 형태에 따라 파티션에 분배되는 방식이 달라진다. key가 포함되지 않은 메시지]]></description>
            <link>https://www.jscode.kr/blog/practice-balanced-partition-message-flow</link>
            <guid isPermaLink="false">practice-balanced-partition-message-flow</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 리더 파티션에 장애가 발생하면 어떻게 될까? / Kafka 서버 1대가 고장나면 어떻게 될까? ]]></title>
            <description><![CDATA[✅ 리더 파티션에 장애가 발생하면 어떻게 될까? 이전 강의에서 아래와 같이 설명했었다. 정말 그런지 실습을 통해 확인해보자. 리더 파티션에 장애가 발생하면 팔로워 파티션이 리더 역할(프로듀서로부터 메시지를 받고, 컨슈머가 메시지를 처리)을 대신 수행한]]></description>
            <link>https://www.jscode.kr/blog/practice-leader-failure-and-server-crash</link>
            <guid isPermaLink="false">practice-leader-failure-and-server-crash</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 하나의 파티션에는 정말 하나의 컨슈머만 할당되는 지 확인해보기 ]]></title>
            <description><![CDATA[✅ 하나의 파티션에는 정말 하나의 컨슈머만 할당될까? 이전 강의에서 ‘하나의 파티션은 하나의 컨슈머에게만 할당된다’라는 파티션의 특징을 배웠다. 이번 강의에서는 아래 그림과 같이 하나의 파티션에는 정말 하나의 컨슈머만 할당이 되는 지 실습을 해볼 것이]]></description>
            <link>https://www.jscode.kr/blog/practice-one-consumer-per-partition</link>
            <guid isPermaLink="false">practice-one-consumer-per-partition</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[적정 파티션 개수 계산하는 방법 ]]></title>
            <description><![CDATA[✅ 적정 파티션 개수 계산하는 방법 적정 파티션 개수를 정할 때의 핵심은 ‘처리가 지연되는 메시지가 생기지 않는 선에서 파티션을 최소로 설정하는 것’이다. 공식으로 표현하자면 다음 공식을 만족하게 파티션 수를 결정하면 된다. 프로듀서가 보내는 메시지량]]></description>
            <link>https://www.jscode.kr/blog/how-to-calc-optimal-partitions</link>
            <guid isPermaLink="false">how-to-calc-optimal-partitions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 Kafka에서 메시지 조회하기 (Consumer) ]]></title>
            <description><![CDATA[✅ Spring Boot로 Kafka에서 메시지 조회하기 (Consumer) 위 그림과 같이 Consumer 역할을 하는 Spring Boot 서버를 추가로 만들어 Kafka에 들어있는 메시지를 처리해보자. Spring Boot 프로젝트 셋팅 appl]]></description>
            <link>https://www.jscode.kr/blog/practice-consumer-code-with-spring-boot</link>
            <guid isPermaLink="false">practice-consumer-code-with-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[Q&A] 왜 윈도우에서는 배운 리눅스 명령어가 작동하지 않는 거죠? ]]></title>
            <description><![CDATA[✅ [Q&A] 왜 윈도우에서는 배운 리눅스 명령어가 작동하지 않는 거죠? 윈도우(Windows)는 리눅스(Linux)와는 완전히 다른 운영체제이기 때문에 cmd, powershell과 같은 터미널 창에서는 배운 리눅스 명령어가 제대로 작동하지 않을 수]]></description>
            <link>https://www.jscode.kr/blog/qa-windows-linux-command-differences</link>
            <guid isPermaLink="false">qa-windows-linux-command-differences</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 Kafka에서 재시도조차 실패한 메시지를 따로 보관하기 (DLT, Dead Letter Topic) ]]></title>
            <description><![CDATA[이전 강의에서는 Kafka에서 비동기적으로 메시지를 처리하고, 재시도(Retry) 정책을 통해 메시지 처리에 실패했을 때의 대응법을 배웠다. 그러나 재시도를 여러 번 했음에도 불구하고 처리에 실패하는 메시지는 어떻게 해야 할까? ✅ Dead Lette]]></description>
            <link>https://www.jscode.kr/blog/practice-dead-letter-topic-dlt</link>
            <guid isPermaLink="false">practice-dead-letter-topic-dlt</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kafka란? / 메시지 큐(Message Queue)란? ]]></title>
            <description><![CDATA[✅ 카프카(kafka)란? Kafka의 의미를 검색해보면 아래와 같이 나온다. Apache Kafka는 수천 개의 회사에서 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션에 사용되는 오픈 소스 분산 이벤트 스트리밍]]></description>
            <link>https://www.jscode.kr/blog/what-is-kafka-and-message-queue</link>
            <guid isPermaLink="false">what-is-kafka-and-message-queue</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[파티션(Partition)이란? / 특징 ]]></title>
            <description><![CDATA[✅ 파티션(Partition)이란? 파티션(Partition)은 큐(메시지를 임시로 저장할 수 있는 공간)를 여러개로 늘려서 병렬 처리를 가능하게 하는 기본 단위이다. 파티션은 메시지 처리량에 큰 영향을 미치는 핵심 요인이다. 왜냐하면 메시지를 순차적]]></description>
            <link>https://www.jscode.kr/blog/what-is-partition-and-features</link>
            <guid isPermaLink="false">what-is-partition-and-features</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[Q&A] 이 다음에는 어떤 걸 공부해야 하나요? ]]></title>
            <description><![CDATA[✅ [Q&A] 이 다음에는 어떤 걸 공부해야 하나요? 개발 공부에는 엄격한 순서를 지켜서 공부해야 하는 건 딱히 없다. 하지만 비전공자로 개발을 한 입장에서 “이 순서로 공부했다면 더 수월하게 공부헸겠다”라고 생각이 드는 공부 순서는 있다. 아래 링크]]></description>
            <link>https://www.jscode.kr/blog/qa-what-to-learn-next</link>
            <guid isPermaLink="false">qa-what-to-learn-next</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에서 여러 개의 컨슈머로 메시지 병렬적으로 처리하기 ]]></title>
            <description><![CDATA[✅ Spring Boot에서 여러 개의 컨슈머로 메시지 병렬적으로 처리하기 프로듀서, 컨슈머 서버 실행시키기 컨슈머 서버 로그 확인하기 API 요청 보내면서 컨슈머 서버 로그 확인하기 컨슈머 서버 추가로 띄우기 Consumer 서버 로그 확인하기 AP]]></description>
            <link>https://www.jscode.kr/blog/practice-multiple-consumers-parallel-processing</link>
            <guid isPermaLink="false">practice-multiple-consumers-parallel-processing</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[토픽 생성하기 / 조회하기 / 삭제하기 ]]></title>
            <description><![CDATA[✅ CLI를 활용한 Kafka 조작 이전 강의의 그림에서는 백엔드 서버(Spring Boot)로만 Kafka를 조작할 수 있는 것처럼 표현했지만, 실제로는 CLI로도 Kafka의 모든 기능을 조작할 수 있다. 그럼 자주 사용하는 기능 중 하나인 ‘토픽]]></description>
            <link>https://www.jscode.kr/blog/create-list-delete-topics</link>
            <guid isPermaLink="false">create-list-delete-topics</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[Q&A] 강의에서 안 배운 리눅스 명령어는 어떻게 공부해야 하나요? ]]></title>
            <description><![CDATA[✅ [Q&A] 이 강의에 없는 리눅스 명령어는 어떻게 공부해야 하나요? 이 강의는 리눅스의 모든 명령어를 다룬 게 아니기 때문에 개발을 하다보면 안 배운 명령어들도 자주 만나게 된다. 이럴 때 효과적으로 공부하는 방법을 알려주겠다. 평소 개발을 공부할]]></description>
            <link>https://www.jscode.kr/blog/qa-how-to-study-linux-commands</link>
            <guid isPermaLink="false">qa-how-to-study-linux-commands</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[컨슈머가 메시지를 지연 없이 잘 처리하고 있는 지 확인하는 방법 (Consumer Lag) ]]></title>
            <description><![CDATA[컨슈머가 메시지를 지연 없이 잘 처리하고 있는 지 확인하는 방법을 알아보기 전에, 가장 먼저 Lag이라는 용어가 어떤 의미인지 정리해보자. ✅ Lag 이란? 평소에 컴퓨터가 느려지거나 버벅거리면 우리는 “렉 걸린다”라는 표현을 쓴다. 이 때, 렉이라는]]></description>
            <link>https://www.jscode.kr/blog/monitoring-consumer-lag</link>
            <guid isPermaLink="false">monitoring-consumer-lag</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring Boot에 Kafka 서버 3대를 연결해서 사용하는 방법 ]]></title>
            <description><![CDATA[✅ Spring Boot에 Kafka 서버 3대를 연결해서 사용하는 방법 Producer의 코드 수정하기 Consumer 코드 수정하기 위와 같이 코드를 작성해야 여러 Kafka 서버 중 일부 서버가 중단되도 정상적으로 Kafka를 활용할 수 있다. ]]></description>
            <link>https://www.jscode.kr/blog/connect-spring-boot-to-3-kafka-servers</link>
            <guid isPermaLink="false">connect-spring-boot-to-3-kafka-servers</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kafka 서버는 몇 대를 운용하는 게 좋을까? ]]></title>
            <description><![CDATA[✅ Kafka 서버는 몇 대를 운용하는 게 좋을까? kafka 서버를 많이 운용할수록 시스템 전체가 중단될 확률이 줄어들기 때문에 좋기는 하나, 많은 서버를 운용하게 되면 서버 비용이 많이 나온다. 그리고 kafka 서버를 1대로 운용한다고 해서 서비]]></description>
            <link>https://www.jscode.kr/blog/how-many-kafka-servers-to-run</link>
            <guid isPermaLink="false">how-many-kafka-servers-to-run</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS EC2에 Kafka 설치/실행하기 ]]></title>
            <description><![CDATA[✅ AWS EC2에 Kafka 설치하기 JDK 17 설치하기 Kafka 설치 파일 다운받기 설치한 파일 압축풀기 Kafka를 실행시켰을 때 잡아먹는 메모리 크기 낮추기 swap을 활용해 메모리 늘리기 Kafka 설정 수정하기 Kafka 서버 시작하기 ]]></description>
            <link>https://www.jscode.kr/blog/install-run-kafka-on-aws-ec2</link>
            <guid isPermaLink="false">install-run-kafka-on-aws-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kafka를 왜 배워야할까? ]]></title>
            <description><![CDATA[✅ Kafka를 왜 배워야할까? 최근에 Kafka를 배우려는 취준생 개발자분들이나 현업 개발자분들이 시간이 갈수록 점점 많아지고 있다. 이 분들이 Kafka를 배우려는 이유는 다음과 같다. SI/SM 회사가 아닌 서비스 기업에 취업/이직을 하기 위해서]]></description>
            <link>https://www.jscode.kr/blog/why-learn-kafka</link>
            <guid isPermaLink="false">why-learn-kafka</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kafka의 비동기 처리로 인한 성능 이점 느껴보기 ]]></title>
            <description><![CDATA[✅ 이전 강의 복습 (Untitled) 이전 강의에서 REST API 방식은 요청을 보낸 뒤에 모든 작업이 다 처리될 때까지 기다렸다가 응답을 받는 식으로 통신을 한다고 얘기했다. 그래서 만약 이메일 발송을 처리하는 데 시간이 오래 걸린다면 사용자는 ]]></description>
            <link>https://www.jscode.kr/blog/kafka-async-performance-benefit</link>
            <guid isPermaLink="false">kafka-async-performance-benefit</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[토픽 세부 정보 출력값 정보 해석하기 (Isr, Leader, Replicas 등) ]]></title>
            <description><![CDATA[✅ 토픽 세부 정보 출력값 정보 해석하기 (Isr, Leader, Replicas, Elr 등) # 토픽 세부 정보 조회하기
$ bin/kafka-topics.sh \
  --bootstrap-server localhost:9092 \
  --desc]]></description>
            <link>https://www.jscode.kr/blog/interpret-topic-details-isr-leader-replicas</link>
            <guid isPermaLink="false">interpret-topic-details-isr-leader-replicas</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 Kafka에서 처리에 실패한 메시지를 재시도(Retry)하도록 만들기 ]]></title>
            <description><![CDATA[이전 강의에서는 Kafka를 통해 비동기적으로 이메일 발송 요청을 처리함으로써 사용자에게 빠르게 응답할 수 있다는 장점을 살펴봤다. 그러나 Consumer가 실제 작업에 실패했을 때 사용자에게 실패 여부를 전달할 수 없다는 단점이 있었다. 이번 시간에]]></description>
            <link>https://www.jscode.kr/blog/practice-retry-failed-messages</link>
            <guid isPermaLink="false">practice-retry-failed-messages</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] kafka 서버 총 3대 셋팅하기 ]]></title>
            <description><![CDATA[✅ kafka 서버 3대 셋팅하기 이전 강의에서 kafka 노드 1대(= kafka 서버 1대)만 운용하면, 이 노드 1대가 고장나는 순간 서비스에 장애가 일어난다고 얘기했다. 이걸 방지하기 위해 kafka 노드 2대를 추가적으로 연결시켜보자. 

현]]></description>
            <link>https://www.jscode.kr/blog/practice-setup-3-kafka-servers</link>
            <guid isPermaLink="false">practice-setup-3-kafka-servers</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot로 재시도조차 실패한 메시지 사후 처리하기 ]]></title>
            <description><![CDATA[이전 강의에서는 Kafka에서 재시도까지 실패한 메시지를 email.send.dlt와 같은 DLT(Dead Letter Topic)에 안전하게 저장하는 방법을 배웠다. 하지만 DLT에 저장하는 것만으로는 문제가 해결되지 않는다. 실패한 메시지를 직접 ]]></description>
            <link>https://www.jscode.kr/blog/practice-handle-dlt-messages</link>
            <guid isPermaLink="false">practice-handle-dlt-messages</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[노드(node), 브로커(broker), 컨트롤러(controller), 클러스터(cluster), 레플리케이션(replication)이란? ]]></title>
            <description><![CDATA[kafka의 고가용성(시스템이 장애 상황에서도 멈추지 않고 정상적으로 서비스를 제공할 수 있는 능력)을 확보하는 방법을 이해하려면 아래 용어들을 먼저 알고있어야 한다. ✅ 노드(node)란? 노드(node)란, 카프카가 설치되어 있는 서버 단위를 의미]]></description>
            <link>https://www.jscode.kr/blog/what-are-node-broker-controller-cluster-replication</link>
            <guid isPermaLink="false">what-are-node-broker-controller-cluster-replication</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 자료] 토픽, 컨슈머 그룹 이름 짓는 법 (Naming Convention) ]]></title>
            <description><![CDATA[토픽명과 컨슈머 그룹명을 지을 때 어떤 식으로 지어야 하는 지 고민될 수 있다. 그래서 이와 관련된 참고하기 좋은 링크가 있어서 공유한다. ]]></description>
            <link>https://www.jscode.kr/blog/naming-convention-topic-consumer-group</link>
            <guid isPermaLink="false">naming-convention-topic-consumer-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에 Kafka 연결을 위한 코드 추가하기 ]]></title>
            <description><![CDATA[✅ Spring Boot에 Kafka 연결하기 동일한 환경에서 실습을 진행하기 위해 아래 버전을 사용할 것을 권장한다.
- Spring Boot는 3.x.x 버전
- JDK 21 Spring Boot 프로젝트 셋팅 application.yml에 Kaf]]></description>
            <link>https://www.jscode.kr/blog/practice-connect-spring-boot-to-kafka</link>
            <guid isPermaLink="false">practice-connect-spring-boot-to-kafka</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:14:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[권한(Permission)이란? ]]></title>
            <description><![CDATA[✅ 권한(Permission)이란? 리눅스에서는 여러 사용자 계정을 만들어서 사용할 수 있다고 했다. 그러다보니 특정 사용자가 다른 사용자의 파일을 마음대로 접근하는 걸 막기 위해 권한(Permission)이라는 기능을 추가했다. 권한(Permissi]]></description>
            <link>https://www.jscode.kr/blog/what-is-permission</link>
            <guid isPermaLink="false">what-is-permission</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[그룹(group)이란? ]]></title>
            <description><![CDATA[✅ 그룹(group)이란? 리눅스에서 그룹(group)이란 사용자 계정을 묶어서 관리하기 위한 단위이다. 여러 사용자에게 공통된 권한을 한 번에 부여하고 관리할 때 유용하게 사용된다. ✅ 그룹(group)의 특징 한 사용자(user)는 무조건 하나의 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-group</link>
            <guid isPermaLink="false">what-is-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[내 IP 주소 확인하기 (ip) ]]></title>
            <description><![CDATA[✅ 내 IP 주소 확인하기 (ip) IP란 네트워크 상에서의 특정 컴퓨터를 가리키는 주소를 의미한다. 아래와 같은 값이 IP 주소이다. 13.250.15.132 실무에서 백엔드 서버와 통신하기 위해서는 백엔드 서버가 실행되고 있는 컴퓨터의 IP 주소를]]></description>
            <link>https://www.jscode.kr/blog/check-ip-address</link>
            <guid isPermaLink="false">check-ip-address</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[사용자(user), 슈퍼 사용자(super user)란? ]]></title>
            <description><![CDATA[Permission denied라는 에러가 발생한 원인을 분석하려면 사용자(user), 슈퍼 사용자(super user), 그룹(group)의 개념을 알아야 한다. 하나씩 알아보자. ✅ 사용자(user) 컴퓨터 환경에서 사용자(user)란 컴퓨터에 접]]></description>
            <link>https://www.jscode.kr/blog/user-vs-super-user</link>
            <guid isPermaLink="false">user-vs-super-user</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[문자열을 터미널 화면에 출력하는 명령어 (echo) ]]></title>
            <description><![CDATA[✅ 문자열을 터미널 화면에 출력하는 명령어 (echo) 리눅스 명령어에서 echo는 Java에서의 System.out.println(), Javascript에서의 console.log()와 같은 역할을 하는 명령어이다. 바로 실습을 해보자. $ ech]]></description>
            <link>https://www.jscode.kr/blog/echo-command</link>
            <guid isPermaLink="false">echo-command</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[백그라운드에서 실행되고 있는 프로세스의 로그 확인하는 법 (nohup) ]]></title>
            <description><![CDATA[✅ 백그라운드에서 실행되고 있는 프로세스의 로그 확인하는 법 이전 강의에서 실행시킨 Spring Boot 종료하기 포그라운드에서 Spring Boot 실행시켜보기 백그라운드에서 Spring Boot 실행시켜보기 nohup.out 파일 확인해보기 그럼 ]]></description>
            <link>https://www.jscode.kr/blog/check-nohup-logs</link>
            <guid isPermaLink="false">check-nohup-logs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[터미널 창을 끄더라도 프로그램이 계속 실행되도록 만들기 (nohup, &) ]]></title>
            <description><![CDATA[✅ 포그라운드(foreground), 백그라운드(background)란? 터미널 창을 끄더라도 프로그램이 계속 실행되도록 만들기 전에, 포그라운드(foreground)와 백그라운드(background)의 개념이 어떤 건지부터 알아야 한다. 포그라운드(]]></description>
            <link>https://www.jscode.kr/blog/run-program-detached-nohup</link>
            <guid isPermaLink="false">run-program-detached-nohup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot 서버가 출력하는 로그를 파일로 남기기 ]]></title>
            <description><![CDATA[✅ 사전 환경 셋팅 JDK 설치하기 잘 설치됐는 지 확인하기 Github으로부터 Spring Boot 프로젝트 clone하기 서버 실행시키기 ✅ Spring Boot 서버가 출력하는 로그를 파일로 남기기 실행시킨 서버 종료시키기 표준 출력과 표준 에러]]></description>
            <link>https://www.jscode.kr/blog/practice-save-spring-boot-logs</link>
            <guid isPermaLink="false">practice-save-spring-boot-logs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[특정 포트 번호에 실행되고 있는 프로세스 조회하기 / 포트 충돌 해결하기 (lsof) (]]></title>
            <description><![CDATA[✅ 실전에서 자주 만나는 에러 이전 강의에서 Spring Boot를 실행시켰더니 아래와 같은 에러가 발생한 걸 확인했다. 실제 현업에서도 Port 8080 was already in use와 같은 에러를 많이 만난다. 이 에러의 원인을 정확하게 파악하]]></description>
            <link>https://www.jscode.kr/blog/find-process-by-port-lsof</link>
            <guid isPermaLink="false">find-process-by-port-lsof</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[표준 에러 출력(stderr)이란? ]]></title>
            <description><![CDATA[✅ 표준 에러 출력(stderr)이란? ls abc와 같이 파라미터를 잘못 입력해 명령어를 입력하면, 명령어의 결과값이 아래와 같이 터미널 화면에 출력된다. ls abc 명령어의 결과값이 터미널 화면에 출력되는 방식이 아닌, 파일에 출력되는 방식으로 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-stderr</link>
            <guid isPermaLink="false">what-is-stderr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ‘git pull 받아오기 → Spring Boot 빌드 → 빌드된 jar 파일 실행’의 과정을 자동화하기 ]]></title>
            <description><![CDATA[✅ ‘git pull 받아오기 → Spring Boot 빌드 → 빌드된 jar 파일 실행’의 과정을 자동화하기 새로운 기능이 추가될 때마다 수동으로 백엔드 서버를 배포하다보면 귀찮게 느껴진다. 그래서 이 과정을 자동화해보자. 방법은 어렵지 않다. 수동]]></description>
            <link>https://www.jscode.kr/blog/practice-automate-deploy-shell-script</link>
            <guid isPermaLink="false">practice-automate-deploy-shell-script</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[표준 출력(stdout)이란? ]]></title>
            <description><![CDATA[✅ 표준 출력(stdout)이란? 리눅스에서 ls 명령어를 입력하면 그에 맞는 결과값이 터미널 화면에 출력된다. 리눅스는 내부적으로 ls 명령어의 실행 결과를 터미널 화면에 출력하기 위한 메서드(ex. printf())를 호출했을 것이다. 체감상으로는]]></description>
            <link>https://www.jscode.kr/blog/what-is-stdout</link>
            <guid isPermaLink="false">what-is-stdout</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[어떠한 제약도 없이 모든 기능을 사용할 수 있는 관리자 권한 (sudo) ]]></title>
            <description><![CDATA[✅ 권한이 허용되지 않았는데 접근이 가능한 경우 $ su ubuntu # ubuntu 계정으로 로그인
$ cd /var/log
$ ls -al /var/log 내부의 파일들을 살펴보면 chrony라는 디렉터리가 있다. chrony 디렉터리의 소유자와 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-sudo</link>
            <guid isPermaLink="false">what-is-sudo</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[연습문제] 지금까지 배운 명령어 실전처럼 써먹어보기 ]]></title>
            <description><![CDATA[✅ 요구 사항 설정 파일 생성하기 파일 내용 읽기 파일 내용 복사 붙여넣기 ✅ 정답 해설]]></description>
            <link>https://www.jscode.kr/blog/practice-basic-commands-2</link>
            <guid isPermaLink="false">practice-basic-commands-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[패키지 매니저(Package Manager)란? ]]></title>
            <description><![CDATA[✅ 패키지 매니저(Package Manager)란? 갤럭시(Android)에서 앱을 받을 때는 Play Store를 활용하고, 아이폰(iOS)에서 앱을 받을 때는 App Store를 활용할 것이다. 이런 것처럼 개발 환경에서는 프로그램(소프트웨어, 라]]></description>
            <link>https://www.jscode.kr/blog/what-is-package-manager</link>
            <guid isPermaLink="false">what-is-package-manager</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스에서 실행 중인 프로세스 조회하기 / 종료하기 (ps, kill) ]]></title>
            <description><![CDATA[✅ 프로세스란? 프로세스(process)란 실행 중인 프로그램을 의미한다. 운영체제를 공부해보지 않은 사람들한테는 프로세스(process)라는 용어보다 프로그램(program)이라는 용어가 익숙할 것이다. 하지만 프로세스(process)라는 용어를 더]]></description>
            <link>https://www.jscode.kr/blog/view-and-kill-processes</link>
            <guid isPermaLink="false">view-and-kill-processes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스에서 가장 많이 사용하는 텍스트 에디터 (vim) (]]></title>
            <description><![CDATA[✅ 다양한 텍스트 에디터 윈도우나 맥에서 파일에 코드(또는 텍스트)를 작성할 때 vscode, IntelliJ, Sublime Text와 같은 프로그램을 활용했을 것이다. 이런 프로그램을 보고 텍스트 에디터(Text Editor)라고 얘기한다. 리눅스]]></description>
            <link>https://www.jscode.kr/blog/most-used-text-editor-vim</link>
            <guid isPermaLink="false">most-used-text-editor-vim</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[파일에 작성된 내용 보기 (vim, cat) ]]></title>
            <description><![CDATA[✅ 파일에 작성된 내용 보는 방법 파일에 작성된 내용을 볼 수 있는 방법은 여러가지가 있지만 두 가지 방식만 먼저 익혀두자. vim 활용 cat 명령어 활용 ✅ 텍스트 양이 많은 파일을 봐야 할 때 # 텍스트 양이 많은 파일 생성
# (= 1부터 10]]></description>
            <link>https://www.jscode.kr/blog/view-file-content</link>
            <guid isPermaLink="false">view-file-content</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[자주 사용하는 apt 명령어 4가지 ]]></title>
            <description><![CDATA[✅ 자주 사용하는 패키지 매니저 명령어 (apt) ** 현재 구성해놓은 환경이 Ubuntu이므로 패키지 매니저로는 apt를 사용할 것이다. 패키지 설치 패키지 목록 최신화 설치된 패키지 확인하기 패키지 삭제 다음 강의에서는 지금까지 배운 명령어를 활용]]></description>
            <link>https://www.jscode.kr/blog/apt-common-commands</link>
            <guid isPermaLink="false">apt-common-commands</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 표준 출력(stdout) 활용해보기 ]]></title>
            <description><![CDATA[✅ 터미널 창에 결과값 출력하기 이전 강의에서 표준 출력(stdout)이란, 명령어의 실행 결과를 ‘출력할 곳’으로 이동시켜주는 통로라고 설명했다. 아래 명령어를 입력했을 때 터미널 화면에 결과값이 출력되는 이유는, 위의 그림과 같이 표준 출력이 결과]]></description>
            <link>https://www.jscode.kr/blog/practice-stdout</link>
            <guid isPermaLink="false">practice-stdout</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 실행시킨 Spring Boot 프로세스를 조회하고 종료해보기 ]]></title>
            <description><![CDATA[✅ 실행시킨 Spring Boot 프로세스를 조회하고 종료해보기 Spring Boot 서버 실행 잘 작동하는 지 확인 새로운 터미널 창 열어서 프로세스 조회해보기 Spring Boot 프로세스 종료하기 정상적으로 종료됐는 지 확인하기]]></description>
            <link>https://www.jscode.kr/blog/practice-view-kill-spring-boot-process</link>
            <guid isPermaLink="false">practice-view-kill-spring-boot-process</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[참고] 쉘 스크립트 공부 지침 ]]></title>
            <description><![CDATA[✅ 쉘 스크립트 공부 지침 #!/bin/bash

echo "----git pull 받아오기----"
cd /home/ubuntu/linux-springboot
git pull origin main

echo "----빌드하기----"
./gradle]]></description>
            <link>https://www.jscode.kr/blog/guide-shell-script-study</link>
            <guid isPermaLink="false">guide-shell-script-study</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로그 실시간으로 확인하는 법 (tail -f) ]]></title>
            <description><![CDATA[리눅스 컴퓨터에서 실행시키는 프로그램들은 로그가 파일에 쌓이는 경우가 대부분이다. 이 로그들이 어떻게 찍히는 지 실시간으로 확인하고 싶을 때가 있다. 그럴 때 어떻게 하는 지 배워보자. ✅ 로그 실시간으로 확인하는 법 (tail -f) AWS EC2에]]></description>
            <link>https://www.jscode.kr/blog/view-logs-realtime-tail</link>
            <guid isPermaLink="false">view-logs-realtime-tail</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Permission Denied 에러 마주치는 경우 ]]></title>
            <description><![CDATA[✅ Permission Denied 에러 마주치는 경우 $ cd /var/log
$ ls -al # 어떤 파일이 있는 지 확인, amazon이 디렉터리임을 확인
$ cd amazon # amazon 디렉터리로 접근 위 명령어로 amazon 디렉터리에 ]]></description>
            <link>https://www.jscode.kr/blog/permission-denied-cases</link>
            <guid isPermaLink="false">permission-denied-cases</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[vim 에디터 기본 사용법 - 1 ]]></title>
            <description><![CDATA[✅ 파일 생성 (+ vim 열기) # vi [파일명] 
# vim [파일명]

$ vi app.txt ✅ 텍스트 작성법 vim 화면에서 qwer 이라고 키보드로 텍스트를 입력해보자. 아무런 텍스트가 작성되지 않는 걸 확인할 수 있다. 그 이유는 vim]]></description>
            <link>https://www.jscode.kr/blog/vim-basics-1</link>
            <guid isPermaLink="false">vim-basics-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 보안을 위해 파일 접근 권한 제한하기 ]]></title>
            <description><![CDATA[✅ 실습 환경 구성 $ su ubuntu # ubuntu 계정으로 전환
$ cd ~ 
$ touch myfile.txt 여기서 myfile.txt 파일을 보안을 위해 그 누구도 수정하지 못하게 막고 싶은 상황이라고 가정하자. 어떻게 해야 할까? ✅ 파]]></description>
            <link>https://www.jscode.kr/blog/practice-secure-file-permissions</link>
            <guid isPermaLink="false">practice-secure-file-permissions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[권한 변경하는 방법 (chmod) ]]></title>
            <description><![CDATA[✅ 권한 변경하는 방법 (chmod) # chmod [숫자 세 자리] [권한 변경할 파일명]
$ chmod 777 script.sh
$ chmod 644 file.txt
$ chmod 755 secret.txt chmod라는 명령어를 활용하면 파일에 ]]></description>
            <link>https://www.jscode.kr/blog/how-to-change-permissions-chmod</link>
            <guid isPermaLink="false">how-to-change-permissions-chmod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 자료] apt 명령어를 쓸 때 sudo를 써야 하는 이유 ]]></title>
            <description><![CDATA[✅ apt 명령어를 쓸 때 sudo를 써야 하는 이유 이전에 apt에 관련된 명령어를 알려줬을 때 sudo를 붙여서 알려줬다. 그럼 sudo를 안 붙이고 명령어를 실행시키면 어떻게 되는 지 확인해보자. 그리고 왜 sudo를 붙여야 하는 지 지금까지 배]]></description>
            <link>https://www.jscode.kr/blog/why-sudo-with-apt</link>
            <guid isPermaLink="false">why-sudo-with-apt</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 왜 Permission Denied 에러가 발생하는 지 원인 분석해보기 ]]></title>
            <description><![CDATA[✅ 왜 Permission Denied 에러가 발생하는 지 원인 분석해보기 $ cd /var/log
$ ls -al # 어떤 파일이 있는 지 확인, amazon이 디렉터리임을 확인
$ cd amazon # amazon 디렉터리로 접근 이 섹션의 초반부]]></description>
            <link>https://www.jscode.kr/blog/practice-analyze-permission-denied</link>
            <guid isPermaLink="false">practice-analyze-permission-denied</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[쉘 스크립트 파일 작성/실행 하는 법 ]]></title>
            <description><![CDATA[✅ 쉘 스크립트 파일 작성/실행하는 법 파일명을 .sh로 끝나게 작성하기 파일 첫 줄에 #!/bin/bash 작성하기 자동으로 실행시키고 싶은 명령어들 순서대로 입력하기 쉘 스크립트 파일 실행하기 ✅ Permission denied 에러 분석하기 $ ]]></description>
            <link>https://www.jscode.kr/blog/write-run-shell-scripts</link>
            <guid isPermaLink="false">write-run-shell-scripts</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] apt를 활용해 Nginx 설치해보기 ]]></title>
            <description><![CDATA[✅ apt를 활용해 Nginx 설치해보기 패키지 목록 최신화 Nginx 설치하기 Nginx 잘 설치됐는 지 확인하기 Nginx 삭제하기]]></description>
            <link>https://www.jscode.kr/blog/practice-install-nginx-with-apt</link>
            <guid isPermaLink="false">practice-install-nginx-with-apt</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[표준 출력(stdout)과 표준 에러 출력(stderr)의 추가 기능 ]]></title>
            <description><![CDATA[✅ 기존 파일에 덮어 쓰기 vs 기존 파일에 이어서 쓰기 표준 출력인 경우 표준 에러 출력인 경우 ✅ 정리 > 대신 >>를 사용하면 파일을 덮어쓰지 않고 파일의 끝에 이어서 출력값을 덧붙여 기록하게 된다. 만약 기존의 출력값이 사라지면 안 되는 경우에]]></description>
            <link>https://www.jscode.kr/blog/stdout-stderr-advanced</link>
            <guid isPermaLink="false">stdout-stderr-advanced</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[컴퓨터가 느려질 때 CPU, Memory 성능 체크해서 원인 파악하기 (top) ]]></title>
            <description><![CDATA[✅ 컴퓨터가 느려질 때 CPU, Memory 성능 체크하기 (top) 우리가 사용하는 컴퓨터도 동시에 여러 프로그램을 많이 키면 속도가 느려지고 버벅거릴 때가 있다. 그럴 때 작업 관리자 창을 켜서 어떤 프로그램이 렉을 걸리게 하는 지 파악하려고 한다]]></description>
            <link>https://www.jscode.kr/blog/check-cpu-memory-top</link>
            <guid isPermaLink="false">check-cpu-memory-top</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[특정 키워드가 들어간 문장만 찾고 싶을 때 (grep) ]]></title>
            <description><![CDATA[grep 명령어는 다른 명령어와 함께 조합해서 사용하는 경우가 많기 때문에 반드시 알아두어야 한다. ✅ 특정 키워드가 들어간 문장만 찾고 싶을 때 (grep) [예제 1] $ cd /
$ ls -al
$ ls -al | grep media # ls -]]></description>
            <link>https://www.jscode.kr/blog/grep-find-keywords</link>
            <guid isPermaLink="false">grep-find-keywords</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[서버가 잘 작동하는 지 API 요청 보내보기 (curl) ]]></title>
            <description><![CDATA[✅ 서버가 잘 작동하는 지 API 요청 보내보기 (curl) 실제 백엔드 서버를 띄우고나서 테스트를 할 때 많이 활용하는 툴로 포스트맨(Postman)이 있다. 포스트맨(Postman)을 활용하면 다양한 형태의 API 요청을 보낼 수 있어 테스트하기가]]></description>
            <link>https://www.jscode.kr/blog/test-api-with-curl</link>
            <guid isPermaLink="false">test-api-with-curl</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[vim 에디터 기본 사용법 - 2 ]]></title>
            <description><![CDATA[✅ 강제 종료 기존 app.txt 파일을 열어서 텍스트를 일부 수정해보자. $ vi app.txt 그런데 갑자기 수정한 내용을 저장하고 싶지 않다는 생각이 들었다. 수정한 텍스트를 저장하지 않고 vim을 종료하기 위해 COMMAND 모드에서 :q를 입]]></description>
            <link>https://www.jscode.kr/blog/vim-basics-2</link>
            <guid isPermaLink="false">vim-basics-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스에서의 파일(file), 디렉터리(directory)의 의미 ]]></title>
            <description><![CDATA[✅ 리눅스에서의 파일(file), 디렉터리(directory)의 의미 윈도우나 맥에서 얘기하는 파일(file)과 폴더(folder)의 개념이 리눅스에서는 조금 다르다. 리눅스에서는 폴더(folder)라고 부르지 않고, 디렉터리(directory)라고 ]]></description>
            <link>https://www.jscode.kr/blog/files-and-directories-in-linux</link>
            <guid isPermaLink="false">files-and-directories-in-linux</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스 환경 구축하는 방법 (feat. AWS EC2) ]]></title>
            <description><![CDATA[✅ 리눅스 환경 구축하기 (feat. AWS EC2) 리눅스를 공부하기 위해 가장 먼저 리눅스 환경을 설치하고 구축해야 한다. 정확히는 리눅스 배포판 중 Ubuntu를 설치해서 학습할 것이다. 여러 책이나 강의를 찾아보면 Ubuntu 환경을 구축할 때]]></description>
            <link>https://www.jscode.kr/blog/how-to-setup-linux-environment-ec2</link>
            <guid isPermaLink="false">how-to-setup-linux-environment-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[파일 종류 확인 / 숨김 파일 조회 (ls -l, ls -a) ]]></title>
            <description><![CDATA[✅ 파일 종류 확인 (ls -l) 윈도우나 맥에서는 아이콘의 모양을 보고 일반 파일인지 디렉터리인지 바로 구분할 수 있다. 리눅스에서는 일반 파일인지 디렉터리인지 어떻게 구분할 수 있을까? 바로 ls -l이라는 명령어를 활용하면 된다. # ls -l ]]></description>
            <link>https://www.jscode.kr/blog/file-types-and-hidden-files</link>
            <guid isPermaLink="false">file-types-and-hidden-files</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[터미널(Terminal)이란 ? ]]></title>
            <description><![CDATA[✅ 터미널(Terminal)이란 ? 이전 실습에서 AWS EC2 인스턴스를 실행시켜서 접속해보니 아래와 같은 화면이 떴었다. 검은 화면에 흰색 글씨들이 적혀져있는 창을 보고 터미널(Terminal)이라고 부른다. 터미널(Terminal)은 컴퓨터를 직]]></description>
            <link>https://www.jscode.kr/blog/what-is-terminal</link>
            <guid isPermaLink="false">what-is-terminal</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS로 리눅스(Ubuntu) 환경 구축하기 ]]></title>
            <description><![CDATA[AWS에 초점을 맞춘 강의가 아니기 때문에 AWS에 대한 자세한 설명을 하진 않을 예정이다. ✅ AWS로 리눅스(Ubuntu) 환경 구축하기 EC2 페이지 들어가기 리전 선택하기 인스턴스 시작 페이지로 이동하기 인스턴스 시작을 위한 셋팅 ✅ Ubunt]]></description>
            <link>https://www.jscode.kr/blog/practice-setup-ubuntu-on-aws</link>
            <guid isPermaLink="false">practice-setup-ubuntu-on-aws</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[다양한 리눅스의 종류 / 리눅스 배포판 ]]></title>
            <description><![CDATA[✅ 다양한 리눅스의 종류 (리눅스 배포판) 리눅스(Linux)는 오픈소스로 공개되어 있는 운영체제이다. 그래서 누구나 자유롭게 커스터마이징해서 새로운 버전을 만들 수 있다. 그래서 사람들과 기업들이 자신들의 목적에 맞게 다르게 만든 리눅스가 아주 많이]]></description>
            <link>https://www.jscode.kr/blog/linux-distributions</link>
            <guid isPermaLink="false">linux-distributions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[명령어를 일일이 다 칠 필요 없는 자동완성 기능 / 이전에 썼던 명령어 불러오기 ]]></title>
            <description><![CDATA[✅ 명령어를 일일이 다 칠 필요 없는 자동완성 기능 리눅스에는 자동 완성 기능이 있다. 명령어의 처음 몇 글자만 입력한뒤 Tab을 누르면 그 다음은 자동으로 완성해준다. [예제 1] $ cd ~ # 홈 디렉토리로 이동
$ touch text-file-]]></description>
            <link>https://www.jscode.kr/blog/auto-complete-and-command-history</link>
            <guid isPermaLink="false">auto-complete-and-command-history</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스를 실행시키자마자 뜨는 첫 화면 해석하기 / 기본 조작법 익히기 ]]></title>
            <description><![CDATA[✅ 리눅스를 실행시키자마자 뜨는 첫 화면 해석하기 빨간 박스 이외의 내용들은 신경쓰지 말자. 리눅스를 처음 배우는 입장에서 별로 중요한 내용이 아니다. 터미널 창을 보면 맨 마지막 줄에 ubuntu@ip-172-31-24-185:~$라고 표시되어 있다]]></description>
            <link>https://www.jscode.kr/blog/linux-first-screen-and-basics</link>
            <guid isPermaLink="false">linux-first-screen-and-basics</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스 명령어들의 공통적인 패턴 - 옵션(Option) ]]></title>
            <description><![CDATA[✅ 리눅스 명령어들의 공통적인 패턴 - 옵션(Option) 앞으로 여러 리눅스 명령어를 배우다 보면 공통적인 패턴이 보일 것이다. 그 패턴이 뭔지만 파악해도 리눅스 명령어를 훨씬 쉽게 학습할 수 있게 된다. 이전 강의에서 아래와 같은 명령어를 배우고 ]]></description>
            <link>https://www.jscode.kr/blog/linux-command-option-pattern</link>
            <guid isPermaLink="false">linux-command-option-pattern</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리눅스(Linux)란?]]></title>
            <description><![CDATA[✅ 리눅스(Linux)란? 리눅스(Linux)의 의미를 인터넷에 검색해보면 아래와 같이 나온다. 리눅스(Linux)는 리눅스 토발즈가 개발한 유닉스 계열의 오픈 소스 운영 체제입니다. 즉, 리눅스 커널을 기반으로 다양한 응용 프로그램과 라이브러리를 함]]></description>
            <link>https://www.jscode.kr/blog/what-is-linux</link>
            <guid isPermaLink="false">what-is-linux</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[연습문제] 지금까지 배운 명령어 실전처럼 써먹어보기 ]]></title>
            <description><![CDATA[지금까지 한 강의 중 이 과정이 제일 중요하다. 스스로 머릿속으로 고민하면서 어떤 명령어를 입력해야 할 지 고민하는 과정에서, 지금까지 배운 명령어들이 단기 기억에서 장기 기억으로 넘어가게 된다. 그러니 반드시 강의를 멈춰두고 이 과정을 스스로 해봐야]]></description>
            <link>https://www.jscode.kr/blog/practice-basic-commands-1</link>
            <guid isPermaLink="false">practice-basic-commands-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[파일 및 디렉터리 복사 / 이동 / 이름 변경 (cp, mv) ]]></title>
            <description><![CDATA[✅ 파일 복사 명령어 : cp [복사할 파일] [복사할 위치 or 복사할 파일명] $ cd ~ # 홈 디렉토리로 이동
$ touch a.txt # a.txt라는 빈 파일 생성 
$ mkdir box # box라는 빈 디렉터리 생성
$ ls # 잘 생성]]></description>
            <link>https://www.jscode.kr/blog/copy-move-rename-files-directories</link>
            <guid isPermaLink="false">copy-move-rename-files-directories</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[파일 및 디렉터리 생성 / 삭제 (touch, mkdir, rm) ]]></title>
            <description><![CDATA[$ cd ~ # 홈 디렉토리로 이동
$ pwd # 잘 이동했는 지 경로 확인

$ touch jscode-file # jscode-file이라는 파일 생성
$ ls # 파일 잘 생성됐는 지 확인 ✅ 일반 파일 생성 (빈 파일 생성) 명령어 : touc]]></description>
            <link>https://www.jscode.kr/blog/create-and-delete-files-directories</link>
            <guid isPermaLink="false">create-and-delete-files-directories</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[상대 경로, 절대 경로란? / 구분 방법 ]]></title>
            <description><![CDATA[✅ 상대 경로, 절대 경로란? $ cd /var
$ ls /var이라는 경로에 들어가러 ls 명령어를 입력해보면 /var 디렉터리 안에 log라는 디렉터리가 있음을 알 수 있다. log 디렉터리로 들어가기 위해 아래와 같이 명령어를 작성했다고 치자. ]]></description>
            <link>https://www.jscode.kr/blog/relative-vs-absolute-path</link>
            <guid isPermaLink="false">relative-vs-absolute-path</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[폴더 이동하면서 파일 둘러보기 / 리눅스의 기본 폴더 구조 (pwd, cd, ls) ]]></title>
            <description><![CDATA[✅ 현재 디렉터리 경로 조회 (pwd) 컴퓨터에서 경로(path)는 특정 파일이 어디에 있는 지를 설명하는 주소를 의미한다. 윈도우나 맥에서 보면 특정 파일이나 폴더에 경로가 존재한다. 리눅스도 이와 같이 경로가 존재한다. 리눅스 환경에서 현재 내가 ]]></description>
            <link>https://www.jscode.kr/blog/navigate-folders-and-linux-structure</link>
            <guid isPermaLink="false">navigate-folders-and-linux-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[경로에 물결 표시(~)는 무슨 의미일까? ]]></title>
            <description><![CDATA[✅ 경로에 물결 표시(~)는 무슨 뜻일까? 아래와 같이 경로를 이동하다보면 터미널 화면에 절대 경로가 표시되는 걸 확인할 수 있다. $ cd /var/log
$ cd /home 하지만 아래 경로로 이동하는 순간 절대 경로가 표시되지 않고, 물결 표시(]]></description>
            <link>https://www.jscode.kr/blog/meaning-of-tilde-in-path</link>
            <guid isPermaLink="false">meaning-of-tilde-in-path</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 05:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Elastic Cloud에서 Elasticsearch 생성하기 (+ 가입하기) ]]></title>
            <description><![CDATA[✅ Elastic Cloud에 처음 가입하는 유저인 경우 (14일 무료 체험판 활용) Elastic Cloud 검색해서 들어가기 로그인 페이지로 들어가기 회원가입 버튼 누르기 기본 정보 입력하기 생성할 Elasticsearch 기본 셋팅하기 생성된 D]]></description>
            <link>https://www.jscode.kr/blog/practice-create-elasticsearch-in-elastic-cloud</link>
            <guid isPermaLink="false">practice-create-elasticsearch-in-elastic-cloud</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 자동 완성 기능 ]]></title>
            <description><![CDATA[✅ 요구사항 반영하기 자동 완성 기능 구현하기 요구 사항에 있는 모든 사항을 다 반영시켰다. 다음 강의에서 지금까지 작성한 쿼리를 정리해보자. ]]></description>
            <link>https://www.jscode.kr/blog/exercise-fuzzy-highlight-pagination</link>
            <guid isPermaLink="false">exercise-fuzzy-highlight-pagination</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[최종 쿼리 / 적용 전략 및 순서 ]]></title>
            <description><![CDATA[✅ 최종 쿼리 [생성해야 할 인덱스 및 매핑] DELETE /products

PUT /products
{
  "settings": {
    "analysis": {
		  // 필터 정의
		  "filter": {
        "product_]]></description>
            <link>https://www.jscode.kr/blog/exercise-autocomplete</link>
            <guid isPermaLink="false">exercise-autocomplete</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 한글, 영어 검색 / 동의어 기반 검색 / 필터링 ]]></title>
            <description><![CDATA[✅ 요구사항 반영하기 한글, 영어 둘 다 검색이 잘 되도록 만들기 동의어로 검색할 수 있게 만들기 가격으로 필터링 할 수 있게 만들기 카테고리로 필터링하기]]></description>
            <link>https://www.jscode.kr/blog/exercise-korean-english-synonym-filter-search</link>
            <guid isPermaLink="false">exercise-korean-english-synonym-filter-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[프로젝트 설명 / 요구 사항 (상품 검색 기능, 자동 완성 기능) ]]></title>
            <description><![CDATA[지금까지 배운 Elasticsearch의 기능을 활용해 쿠팡의 상품 검색 기능을 구현해보자. ✅ 프로젝트 설명 Spring boot(gradle), Spring Data JPA, MySQL을 활용해 아래 API를 가진 서버를 운영하고 있었다고 가정하자]]></description>
            <link>https://www.jscode.kr/blog/project-description</link>
            <guid isPermaLink="false">project-description</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 특정 조건 상위 노출 / 오타 허용 검색 / 하이라이팅 처리 / 페이지네이션 ]]></title>
            <description><![CDATA[✅ 요구사항 반영하기 되도록이면 평점이 4.0이 넘는 상품을 상위 노출 시키기 어느 정도 오타가 있더라도 검색되게 만들기 상품명에서 일치하는 검색 키워드는 하이라이팅 처리( <b></b>) 하기 상품이 5개씩 조회되도록 페이지네이션 처리하기 검색 기능]]></description>
            <link>https://www.jscode.kr/blog/exercise-filtering-and-scoring</link>
            <guid isPermaLink="false">exercise-filtering-and-scoring</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 비용 나가지 않게 Elastic Cloud 리소스 정리하기 ]]></title>
            <description><![CDATA[✅ 비용 나가지 않게 Elastic Cloud 리소스 정리하기 14일 무료 체험판을 사용하신 분은 별도로 리소스를 종료하지 않아도 된다. 14일이 지나면 알아서 체험판이 종료된다. ✅ 혹시나 비용이 나가는 건 아닌 지 체크하는 방법]]></description>
            <link>https://www.jscode.kr/blog/extra-clean-up-elastic-cloud-resources</link>
            <guid isPermaLink="false">extra-clean-up-elastic-cloud-resources</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인덱스 생성 / 매핑 정의 / 여러 필드에 걸쳐 검색하기 ]]></title>
            <description><![CDATA[✅ 요구사항 반영하기 Spring Data Elasticsearch에 익숙한 사람은 Spring Boot에서 코드를 작성해도 된다. 하지만 그렇지 않다면 Kibana에서 요구 사항을 만족시키는 쿼리를 작성한 뒤에 Spring Boot 코드로 옮기는 게]]></description>
            <link>https://www.jscode.kr/blog/exercise-create-index-and-multi-field-search</link>
            <guid isPermaLink="false">exercise-create-index-and-multi-field-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[현업에서는 Elasticsearch를 직접 구축해서 쓰진 않나요? ]]></title>
            <description><![CDATA[✅ 현업에서는 Elasticsearch를 직접 구축해서 쓰진 않나요? 현업에서는 Elasticsearch를 직접 설치해서 운영하기도 하지만, 많은 경우에는 AWS OpenSearch나 Elastic Cloud 같은 서비스를 활용해 구축한다. 왜냐하면 ]]></description>
            <link>https://www.jscode.kr/blog/do-companies-self-host-elasticsearch</link>
            <guid isPermaLink="false">do-companies-self-host-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[참고 자료] 실습에서 발생하는 Elastic Cloud 비용 ]]></title>
            <description><![CDATA[비용이 걱정되시는 분들은 학습이 끝나자마자 최대한 빠르게 Elastic Cloud 리소스를 종료하는 걸 추천한다. 강의의 마지막 부분에 비용이 나가지 않게 Elastic Cloud 리소스를 종료하는 방법도 알려줄 예정이다. ✅ Elastic Cloud]]></description>
            <link>https://www.jscode.kr/blog/reference-elastic-cloud-cost</link>
            <guid isPermaLink="false">reference-elastic-cloud-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[기존 프로젝트 구조 살펴보기 ]]></title>
            <description><![CDATA[✅ 기존 프로젝트 구조 살펴보기 Product 엔티티 API 구성 아키텍처 특징 의존성 다음 강의에서는 기존 프로젝트 구조에서 검색 기능과 자동 완성 기능을 도입하기 위해 아키텍처를 어떻게 구성해야 하는 지 고민해보자. ]]></description>
            <link>https://www.jscode.kr/blog/project-structure</link>
            <guid isPermaLink="false">project-structure</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에서 인덱스에 맞게 Document 정의하기 ]]></title>
            <description><![CDATA[✅ Spring Boot에서 인덱스에 맞게 Document 정의하기 Spring Data JPA에서 DB의 테이블에 맞게 Entity를 작성하는 것처럼, Spring Data Elasticsearch에서 인덱스에 맞게 Document를 작성해야 한다.]]></description>
            <link>https://www.jscode.kr/blog/final-query-and-strategy</link>
            <guid isPermaLink="false">final-query-and-strategy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS Opensearch vs Elastic Cloud ]]></title>
            <description><![CDATA[✅ AWS OpenSearch vs Elastic Cloud AWS OpenSearch와 Elastic Cloud의 차이를 알기 위해 OpenSearch의 역사에 대해 먼저 알아보자. Elasticsearch를 개발한 회사에서 Elasticsearch]]></description>
            <link>https://www.jscode.kr/blog/aws-opensearch-vs-elastic-cloud</link>
            <guid isPermaLink="false">aws-opensearch-vs-elastic-cloud</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[참고 자료] 프로젝트 완성본 (Github) ]]></title>
            <description><![CDATA[프로젝트 레포지토리의 final 브랜치에 프로젝트 완성본을 올려뒀다. 강의의 실습을 똑같이 따라했는데도 잘 작동하지 않았다면, 아래 코드와 비교해서 잘못 작성한 부분이 있는 지 체크해보자. ]]></description>
            <link>https://www.jscode.kr/blog/project-complete-github</link>
            <guid isPermaLink="false">project-complete-github</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에서 Elasticsearch 활용해 자동완성 API 만들기 ]]></title>
            <description><![CDATA[✅ Spring Boot에서 Elasticsearch 활용해 자동완성 API 만들기 Controller에 API 추가하기 Service에 의존성 추가하기 Service에 메서드 만들고 로직 추가하기 Postman으로 테스트를 위한 더미 데이터 넣기 P]]></description>
            <link>https://www.jscode.kr/blog/sync-mysql-and-elasticsearch</link>
            <guid isPermaLink="false">sync-mysql-and-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 대소문자 구분 없이 검색 / 단어 순서 상관없이 검색 / HTML 태그 섞이지 않게 검색 ]]></title>
            <description><![CDATA[✅ 요구사항 반영하기 대소문자 구분없이 검색할 수 있게 만들기 단어의 순서에 상관없이 검색 잘 되게 만들기 HTML 태그로 검색되지 않게 만들기 요구사항을 잘 반영했는 지 테스트해보기]]></description>
            <link>https://www.jscode.kr/blog/exercise-case-insensitive-order-independent-html-strip</link>
            <guid isPermaLink="false">exercise-case-insensitive-order-independent-html-strip</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[인프라 아키텍처 설계하기 ]]></title>
            <description><![CDATA[✅ 인프라 아키텍처 설계하기 MySQL과 Elasticsearch의 장단점은 명확하다. MySQL은 트랜잭션을 기반으로 데이터의 정합성을 보존해주는 게 큰 장점이다. 반면에 Elasticsearch는 빠른 검색에 최적화 되어 있다. 현업에서는 이 2가]]></description>
            <link>https://www.jscode.kr/blog/infra-architecture-design</link>
            <guid isPermaLink="false">infra-architecture-design</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에서 Elasticsearch 활용해 검색 API 만들기 ]]></title>
            <description><![CDATA[✅ Spring Boot에 검색 API 만들기 Controller에 API 추가하기 Service에 메서드 추가하기 깔끔한 테스트를 위해 기존 데이터 삭제하기 Postman으로 테스트를 위한 더미 데이터 집어넣기 테스트해보기 지금까지 구현하고자 한 자]]></description>
            <link>https://www.jscode.kr/blog/build-autocomplete-api-build-search-api</link>
            <guid isPermaLink="false">build-autocomplete-api-build-search-api</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에 Elasitc Cloud의 Elasticsearch 연결하기 ]]></title>
            <description><![CDATA[✅ Spring Boot에 Elasitc Cloud의 Elasticsearch 연결하기 Spring Boot에 Elastic Cloud의 Elasicsearch를 연결하기 위해서는 주소(Endpoint), username, password 이 3가지를]]></description>
            <link>https://www.jscode.kr/blog/practice-connect-spring-boot-to-elastic-cloud-elasticsearch</link>
            <guid isPermaLink="false">practice-connect-spring-boot-to-elastic-cloud-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] MySQL에 데이터 삽입/삭제 시 Elasticsearch에도 같이 반영되게 만들기 ]]></title>
            <description><![CDATA[✅ MySQL에 데이터 삽입/삭제 시 Elasticsearch에도 같이 반영되게 만들기 이전 강의에서 설계했던 인프라 아키텍처에 맞게 작동하도록 만들어보자. ProductDocumentRepository 의존성 추가 상품 등록 로직 수정하기 상품 삭제]]></description>
            <link>https://www.jscode.kr/blog/define-elasticsearch-document-in-spring-boot</link>
            <guid isPermaLink="false">define-elasticsearch-document-in-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:21:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[애널라이저(Analyzer)란? ]]></title>
            <description><![CDATA[✅ 애널라이저(Analyzer)란? 이전 강의에서 products의 name 필드값을 토큰(token)으로 분리해 역인덱스(Inverted Index)로 저장하는 과정을 살펴봤다. 이 과정에서 문자열(text)을 토큰으로 변환시켜주는 장치를 보고 애널]]></description>
            <link>https://www.jscode.kr/blog/what-is-analyzer</link>
            <guid isPermaLink="false">what-is-analyzer</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 단어의 형태(-ed, -ing, -s 등)에 상관없이 검색하는 방법 (stemmer) ]]></title>
            <description><![CDATA[✅ 단어의 형태(-ed, -ing, -s, -er 등)에 상관없이 검색하는 방법 영어 단어를 보면 play, playing, played, player 등 다양한 형태로 사용된다. 검색을 할 때 단어의 형태에 상관없이 검색이 가능하다면 훨씬 편하게 원]]></description>
            <link>https://www.jscode.kr/blog/exercise-stemmer</link>
            <guid isPermaLink="false">exercise-stemmer</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 검색할 때 필요없는 불용어(a, an, the, or, but) 제거하기 (stop) ]]></title>
            <description><![CDATA[✅ 검색할 때 필요없는 불용어(a, an, the, or, but 등) 제거하기 (stop) 영어로 작성된 게시글을 보면 검색어로 잘 사용하지 않는 a, an, the, or과 같은 불용어(= 의미없는 단어)가 많이 포함되어 있다. 역인덱스의 효율적인]]></description>
            <link>https://www.jscode.kr/blog/exercise-stop-words</link>
            <guid isPermaLink="false">exercise-stop-words</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[특정 조건을 만족하는 데이터 위주로 상위 노출 시키고 싶을 때 (bool : should) ]]></title>
            <description><![CDATA[✅ bool 쿼리의 should는 언제 어떻게 쓰일까? bool 쿼리에서 must와 filter는 반드시 조건을 만족하는 데이터만 조회되지만, should는 조건을 만족하지 않는 데이터도 조회되기도 한다. 다만, should의 조건을 충족시키는 데이터]]></description>
            <link>https://www.jscode.kr/blog/bool-should-search</link>
            <guid isPermaLink="false">bool-should-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Elasticsearch 설치하기 ]]></title>
            <description><![CDATA[✅ Elasticsearch 설치하기 OS 환경과 상관없이 간편하고 일관되게 설치하기 위해 Docker를 활용하자. 
** 아래 과정은 Docker가 설치되어 있다는 전제 하에서 진행한다. compose.yml 파일 작성 compose 실행 잘 실행됐]]></description>
            <link>https://www.jscode.kr/blog/install-elasticsearch</link>
            <guid isPermaLink="false">install-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 검색할 때 필요없는 HTML 태그 제거하기 (html_strip) ]]></title>
            <description><![CDATA[✅ 검색 시 필요없는 HTML 태그 제거하기 대부분의 게시글 서비스는 굵게, 기울임, 링크 등을 포함해서 작성할 수 있게 되어 있다. 그러려면 HTML 태그를 포함해서 그대로 DB에 저장해야 하는 경우가 많다. 이렇게 HTML 태그가 포함된 형태의 글]]></description>
            <link>https://www.jscode.kr/blog/exercise-strip-html</link>
            <guid isPermaLink="false">exercise-strip-html</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 동의어로 검색하는 방법 (synonym) ]]></title>
            <description><![CDATA[✅ 동의어로 검색하는 방법 (synonym) Samaung Notebook이라는 상품이 있다고 가정하자. 사람들은 검색할 때 notebook이라고 정확하게 검색할 수도 있지만, 노트북, 랩탑, 휴대용 컴퓨터, laptop과 같이 동의어로 검색할 수도 ]]></description>
            <link>https://www.jscode.kr/blog/exercise-synonym-search</link>
            <guid isPermaLink="false">exercise-synonym-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Nori Analyzer를 활용해 한글(korean)이 제대로 검색되게 만들기 ]]></title>
            <description><![CDATA[✅ Nori Analyzer를 활용해 한글(korean)이 제대로 검색되게 만들기 기존 컨테이너 종료하기 파일 작성하기 컨테이너 띄우기 Analyze API 활용해 디버깅해보기 인덱스 생성하기 데이터 삽입하기 검색해보기 Nori analyzer를 활용]]></description>
            <link>https://www.jscode.kr/blog/exercise-nori-analyzer</link>
            <guid isPermaLink="false">exercise-nori-analyzer</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Elasticsearch를 활용해 CRUD API 만들기 ]]></title>
            <description><![CDATA[심플하게 만들기 위해 Service Layer 없이 Controller만 생성해서 CRUD API를 만들 것이다. ✅ 사용자 생성 API 만들기 Controller 틀 만들기 Request DTO 만들기 Controller 완성하기 Postman으로 ]]></description>
            <link>https://www.jscode.kr/blog/build-crud-api-with-elasticsearch</link>
            <guid isPermaLink="false">build-crud-api-with-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[페이지네이션 (Pagination), 정렬(Sorting) ]]></title>
            <description><![CDATA[✅ 페이지네이션 (Pagination) 서버의 과부하를 방지하기 위해 데이터 조회 시 필수적으로 적용해야 하는 기능이 페이지네이션(Pagination)이다. Elasticsearch에서 페이지네이션(Pagination)을 활용해 데이터 조회하는 방법을]]></description>
            <link>https://www.jscode.kr/blog/pagination-and-sorting</link>
            <guid isPermaLink="false">pagination-and-sorting</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[하나의 필드에 text와 keyword 타입을 동시에 사용하고 싶을 때 (Multi Field) ]]></title>
            <description><![CDATA[✅ 하나의 필드에 text와 keyword 타입을 동시에 사용하고 싶을 때 (Multi Field) 이전 강의(Untitled)에서 데이터 타입을 설명할 때 text는 유연한 검색이 필요할 때 사용한다고 얘기했다. 반면에 keyword는 정확한 검색이]]></description>
            <link>https://www.jscode.kr/blog/multi-field-text-keyword</link>
            <guid isPermaLink="false">multi-field-text-keyword</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[검색 키워드가 포함된 데이터를 조회하고 싶을 때 (match) ]]></title>
            <description><![CDATA[✅ 검색 키워드가 포함된 데이터를 조회하고 싶을 때 (match) match 쿼리는 검색 키워드가 포함된 모든 도큐먼트를 조회한다. 이전 강의에서 역인덱스(Inverted Index)와 애널라이저(Analyzer)를 설명하면서 작동 원리까지 설명했었다]]></description>
            <link>https://www.jscode.kr/blog/match-search</link>
            <guid isPermaLink="false">match-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[매핑(mapping)의 특이한 특징 (null 허용, Array 허용) ]]></title>
            <description><![CDATA[✅ null 허용 (기본적으로 필수로 값을 넣을 필요가 없음) Elasticsearch는 매핑을 정의하더라도 해당 필드가 반드시 존재하거나 null이면 안 된다는 제약을 두지 않는다. 다음과 같은 매핑(mapping)을 설정했다고 치자. "mappin]]></description>
            <link>https://www.jscode.kr/blog/mapping-special-properties-null-array</link>
            <guid isPermaLink="false">mapping-special-properties-null-array</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Elasitcsearch의 검색 기능 테스트해보기 ]]></title>
            <description><![CDATA[✅ Elasitcsearch의 검색 기능 테스트해보기 인덱스 생성하기 매핑 정의하기 도큐먼트 삽입 도큐먼트가 잘 저장됐는지 확인하기 도큐먼트 검색해보기 단어의 순서를 바꿔서 검색해보기 다음 강의에서는 어떻게 Elasticsearch가 단어의 순서를 바]]></description>
            <link>https://www.jscode.kr/blog/test-elasticsearch-search-features</link>
            <guid isPermaLink="false">test-elasticsearch-search-features</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[인덱스 생성하기 / 매핑 정의하기 / 도큐먼트 삽입하기 ]]></title>
            <description><![CDATA[✅ 인덱스(index) 생성, 조회 및 삭제 Elasticsearch에서 인덱스(index)를 생성하는 건 MySQL에서 테이블(table)을 생성하는 것과 같다. 인덱스 생성 및 조회 # 인덱스 생성
# PUT /{인덱스명}
PUT /users

#]]></description>
            <link>https://www.jscode.kr/blog/create-index-mapping-insert-doc</link>
            <guid isPermaLink="false">create-index-mapping-insert-doc</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 한글(korean)과 영어(english)가 섞인 글을 검색 가능하게 만들기 ]]></title>
            <description><![CDATA[✅ 한글(korean)과 영어(english)가 섞인 글을 검색 가능하게 만들기 “오늘 영어 책에서 'It depends on the results.'이라는 문구를 봤다."
우리가 글을 쓰다보면 한글과 영어를 같이 쓰는 경우가 많다. 그럼 이런 글은 ]]></description>
            <link>https://www.jscode.kr/blog/exercise-search-korean-english-mixed</link>
            <guid isPermaLink="false">exercise-search-korean-english-mixed</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[GUI 툴로 Elasticsearch 훨씬 쉽게 조작하기 (feat. Kibana) ]]></title>
            <description><![CDATA[✅ Kibana, Elasticsearch 아키텍처 ✅ Kibana, Elasticsearch 설치 및 실행 compose.yml 파일 작성 compose 실행 잘 실행됐는 지 확인하기 ✅ Kibana로 Elasticsearch 조작하기 Kibana의]]></description>
            <link>https://www.jscode.kr/blog/use-kibana-for-elasticsearch</link>
            <guid isPermaLink="false">use-kibana-for-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[여러 필드(ex. 제목, 내용)에서 검색 키워드가 포함된 데이터를 조회하고 싶을 때 (multi_match) ]]></title>
            <description><![CDATA[✅ 여러 필드에서 검색 키워드가 포함된 데이터를 조회하고 싶을 때 (multi_match) 구글에서 특정 키워드로 검색해보면 사이트의 제목(title) 뿐만 아니라 내용(content)을 포함해서 검색한다. 이와 같이 여러 필드에서 검색 키워드(엘라스]]></description>
            <link>https://www.jscode.kr/blog/multi-match-search</link>
            <guid isPermaLink="false">multi-match-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 저장할 데이터에 맞게 매핑 정의하기 ]]></title>
            <description><![CDATA[✅ 저장할 데이터에 맞게 매핑 정의하기 아래 데이터를 Elasticsearch에 저장해보자. {
  "review_id": 923874239847,           
  "user_id": 1024,                     
  "use]]></description>
            <link>https://www.jscode.kr/blog/exercise-define-mapping</link>
            <guid isPermaLink="false">exercise-define-mapping</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Elasticsearch 작동 방식 / GUI 툴 ]]></title>
            <description><![CDATA[✅ Elasticsearch 작동 방식 MySQL과 소통하려면 SQL문이라는 방식으로 통신해야 한다. 이와 비슷하게 Elasticsearch와 소통하려면 REST API라는 방식으로 통신해야 한다. 통신 방식은 제작사에서 편리하다고 생각하는 방식을 자]]></description>
            <link>https://www.jscode.kr/blog/how-elasticsearch-works-and-gui-tools</link>
            <guid isPermaLink="false">how-elasticsearch-works-and-gui-tools</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[검색한 키워드를 하이라이팅 처리하고 싶을 때 (highlight) ]]></title>
            <description><![CDATA[✅ 검색한 키워드를 하이라이팅 처리하고 싶을 때 (highlight) 구글이나 쿠팡에서 검색을 해보면 검색한 키워드가 하이라이팅 처리가 되있는 걸 확인할 수 있다. 이 기능을 구현해보자. ✅ 실습 이전 강의에 셋팅해놓은 환경을 그대로 사용하자. 검색하]]></description>
            <link>https://www.jscode.kr/blog/highlight-search</link>
            <guid isPermaLink="false">highlight-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[2가지 이상의 조건을 만족시키는 데이터를 조회하고 싶을 때 (bool : filter, must) ]]></title>
            <description><![CDATA[✅ 2가지 이상의 조건을 만족시키는 데이터를 조회하고 싶을 때 (bool : filter, must) 이전 강의에서 아래와 같이 쿼리를 했을 때 에러가 발생하는 걸 확인했다. GET /boards/_search
{
  "query": {
    "te]]></description>
            <link>https://www.jscode.kr/blog/bool-filter-and-must</link>
            <guid isPermaLink="false">bool-filter-and-must</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] filter와 must 구분해서 사용하기 ]]></title>
            <description><![CDATA[✅ filter와 must 구분해서 사용하기 [사전 셋팅] // 기존 인덱스 삭제
DELETE /boards

// 인덱스 생성
PUT /boards
{
  "mappings": {
    "properties": {
      "board_id": ]]></description>
            <link>https://www.jscode.kr/blog/example-filter-vs-must</link>
            <guid isPermaLink="false">example-filter-vs-must</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[매핑(mapping)이란? / 데이터 타입(data type) ]]></title>
            <description><![CDATA[✅ 매핑(mapping)이란? 매핑(mapping)이란 도큐먼트(document)의 각 필드가 어떤 데이터 타입을 가지고 있는 지 정의하는 설정을 의미한다. MySQL에서 테이블을 만들 때 어떤 유형의 데이터를 넣을 지 스키마(schema)를 정의하는]]></description>
            <link>https://www.jscode.kr/blog/what-is-mapping-and-datatypes</link>
            <guid isPermaLink="false">what-is-mapping-and-datatypes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[도큐먼트 저장, 조회, 수정, 삭제하기 ]]></title>
            <description><![CDATA[✅ 도큐먼트 저장 id를 자동으로 생성해서 저장 id를 직접 지정해서 저장 id를 직접 지정해서 저장 (이미 id가 존재한다면 데이터 덮어씌움) = UPSERT ✅ 도큐먼트 조회 (특정 인덱스의) 모든 도큐먼트 조회 id로 특정 도큐먼트 조회 이 외에]]></description>
            <link>https://www.jscode.kr/blog/crud-documents</link>
            <guid isPermaLink="false">crud-documents</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[검색 키워드를 일부 입력했을 때 검색어를 추천해주는 기능 (자동 완성 기능) ]]></title>
            <description><![CDATA[✅ 검색 키워드를 일부 입력했을 때 검색어를 추천해주는 기능 (자동 완성 기능) 쿠팡 서비스에 들어가서 검색 창에 글자를 입력하면 글자에 해당하는 검색어를 추천해준다. 자동 완성 기능을 구현하는 방법에는 정말 다양한 방법이 존재한다. 그 중에서 가성비]]></description>
            <link>https://www.jscode.kr/blog/autocomplete-feature</link>
            <guid isPermaLink="false">autocomplete-feature</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[오타가 있더라도 유사한 단어를 포함한 데이터를 조회하고 싶을 때 (fuzziness) ]]></title>
            <description><![CDATA[✅ 오타가 있더라도 유사한 단어를 포함한 데이터를 조회하고 싶을 때 (fuziness) 구글에서 검색을 해보면 일부 오타를 내더라도 원하는 데이터가 잘 검색이 된다. 우리도 오타가 일부 있더라도 원하는 데이터가 잘 검색되도록 만들어보자. ✅ 실습 인덱]]></description>
            <link>https://www.jscode.kr/blog/fuzziness-search</link>
            <guid isPermaLink="false">fuzziness-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 역인덱스(Inverted Index)를 활용한 데이터 조회 ]]></title>
            <description><![CDATA[✅ 역인덱스(Inverted Index)를 활용한 데이터 조회 기존 products 인덱스 삭제 인덱스 생성 인덱스 잘 생성됐는 지 확인 도큐먼트 삽입 도큐먼트 조회 다음 강의에서는 역인덱스를 생성하는 과정을 조금 더 깊이 파헤쳐보자. ]]></description>
            <link>https://www.jscode.kr/blog/exercise-search-using-inverted-index</link>
            <guid isPermaLink="false">exercise-search-using-inverted-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Elasticsearch의 기본 용어 정리 (인덱스, 도큐먼트, 매핑, 필드) ]]></title>
            <description><![CDATA[✅ Elasticsearch의 기본 용어 정리 MySQL과 Elasticsearch를 비교하면서 공부하면 Elasticsearch를 훨씬 빠르게 배울 수 있다. MySQL은 데이터베이스이다. 데이터를 저장/조회/수정/삭제할 수 있다. 데이터를 저장하기]]></description>
            <link>https://www.jscode.kr/blog/elasticsearch-basic-concepts</link>
            <guid isPermaLink="false">elasticsearch-basic-concepts</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 애널라이저(Analyzer)가 토큰을 어떻게 나누는 지 확인하는 방법 ]]></title>
            <description><![CDATA[✅ standard analyzer가 토큰을 어떻게 나누는 지 확인하는 방법 문법 (Analyze API) // 방법 1 
GET /_analyze
{
  "text": "_________",
  "analyzer": "standard"
}


// ]]></description>
            <link>https://www.jscode.kr/blog/exercise-test-tokenizer</link>
            <guid isPermaLink="false">exercise-test-tokenizer</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[한글(korean)이 제대로 검색되지 않는 현상 ]]></title>
            <description><![CDATA[✅ 한글(korean)이 제대로 검색되지 않는 현상 한글로 이루어진 데이터가 검색이 잘 되는 지 확인해보자. 인덱스 생성하기 데이터 삽입하기 검색해보기 Analyze API 활용해 디버깅하기 다음 강의에서는 Nori Analyzer를 적용시키는 방법에]]></description>
            <link>https://www.jscode.kr/blog/korean-search-issue</link>
            <guid isPermaLink="false">korean-search-issue</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[특정 조건을 만족하지 않는 데이터를 조회하고 싶을 때 (bool : must_not) ]]></title>
            <description><![CDATA[✅ 특정 조건을 만족하지 않는 데이터를 조회하고 싶을 때 (bool : must_not) [사전 셋팅] // 기존 인덱스 삭제
DELETE /boards

// 인덱스 생성
PUT /boards
{
  "mappings": {
    "properti]]></description>
            <link>https://www.jscode.kr/blog/must-not-search</link>
            <guid isPermaLink="false">must-not-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 검색 결과 중 평점이 높고 좋아요 수가 많은 글을 상위에 노출시키고 싶은 경우 ]]></title>
            <description><![CDATA[✅ 검색 결과 중 평점이 높고 좋아요 수가 많은 글을 상위에 노출시키고 싶은 경우 사용자가 특정 키워드(예: "무선 이어폰")로 검색했을 때, 키워드와 관련된 데이터를 조회해오게 만들자. 이 때, 평점이 높거나 좋아요 수가 많은 상품이 상단에 노출되게]]></description>
            <link>https://www.jscode.kr/blog/exercise-rank-by-rating-and-likes</link>
            <guid isPermaLink="false">exercise-rank-by-rating-and-likes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot에 Elasitcsearch 연결하기 (feat. Spring Data Elasticsearch) ]]></title>
            <description><![CDATA[✅ Spring Boot에 Elasitcsearch 연결하기 동일한 환경에서 실습을 진행하기 위해 아래 버전을 사용할 것을 권장한다.
- Spring Boot는 3.x.x 버전
- JDK 17 Spring Boot 프로젝트 셋팅 불필요한 테스트 코드 ]]></description>
            <link>https://www.jscode.kr/blog/connect-elasticsearch-to-spring-boot</link>
            <guid isPermaLink="false">connect-elasticsearch-to-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[단어의 순서가 바뀌어도 검색이 가능하다 ?! ]]></title>
            <description><![CDATA[✅ 단어의 순서가 바뀌어도 검색이 가능하다 ?! MySQL의 products 테이블의 name 컬럼에 맥북 에어 13 M4라고 저장해놓고, 특정 키워드로 데이터를 검색하려면 아래와 같이 SQL문을 작성한다. SELECT * FROM products W]]></description>
            <link>https://www.jscode.kr/blog/search-even-if-order-changes</link>
            <guid isPermaLink="false">search-even-if-order-changes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[역인덱스(Inverted Index)란? ]]></title>
            <description><![CDATA[✅ 역인덱스(Inverted Index)란? 역인덱스(Inverted Index)는 필드 값을 단어마다 쪼개서 찾기 쉽게 정리해놓은 목록이다. 글로 이해하려면 어렵다. 예시를 바로 살펴보자. POST /products/_create/1
{
  "nam]]></description>
            <link>https://www.jscode.kr/blog/what-is-inverted-index</link>
            <guid isPermaLink="false">what-is-inverted-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[숫자/날짜의 값에 대해 범위 조건으로 데이터를 조회하고 싶을 때 (range)]]></title>
            <description><![CDATA[✅ 숫자/날짜의 값에 대해 범위 조건으로 데이터를 조회하고 싶을 때 (range) bool의 should의 실습에서 range 쿼리를 사용하기 때문에 range 쿼리를 먼저 알아보자. 예시를 바로 보는 게 이해가 빠르기 때문에 예시를 바로 살펴보자. ]]></description>
            <link>https://www.jscode.kr/blog/range-search</link>
            <guid isPermaLink="false">range-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[특정 값과 정확하게 일치하는 데이터를 조회하고 싶을 때 (term, terms) ]]></title>
            <description><![CDATA[✅ 특정 값과 정확하게 일치하는 데이터를 조회하고 싶을 때 (term) term 쿼리는 특정 값과 정확히 일치하는 모든 도큐먼트를 조회한다. term 쿼리는 text를 제외한 모든 타입에서 사용한다.
(text 타입에서도 사용은 가능하나 의도대로 작동]]></description>
            <link>https://www.jscode.kr/blog/term-and-terms-search</link>
            <guid isPermaLink="false">term-and-terms-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Elasticsearch에 기본값으로 설정되어 있는 애널라이저(Analyzer) ]]></title>
            <description><![CDATA[✅ 기본값으로 설정되어 있는 애널라이저(Analyzer) Elasticsearch에서 제공하는 애널라이저로는 standard, simple, whitespace 등 다양한 종류가 있다. 그 중 기본값으로 설정되어 있는 애널라이저는 standard an]]></description>
            <link>https://www.jscode.kr/blog/default-analyzers-in-elasticsearch</link>
            <guid isPermaLink="false">default-analyzers-in-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Elasticsearch란? / Elasticsearch 주요 활용 사례 ]]></title>
            <description><![CDATA[✅ Elasticsearch란? Elasticsearch의 의미를 인터넷에 검색해보면 아래와 같이 나온다. Elasticsearch는 오픈 소스 분산, RESTful 검색 및 분석 엔진, 확장 가능한 데이터 저장소 및 벡터 데이터베이스이다.
- Ela]]></description>
            <link>https://www.jscode.kr/blog/what-is-elasticsearch</link>
            <guid isPermaLink="false">what-is-elasticsearch</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 대소문자 구분없이 검색하는 방법 (lowercase) ]]></title>
            <description><![CDATA[✅ 대소문자 구분없이 검색하는 방법 Custom Analyzer를 활용해 인덱스 생성하기 데이터 삽입하기 검색해보기 Analyze API 사용하기 Custom Analyzer를 활용해 인덱스 다시 생성하기 데이터 삽입하기 검색해보기 Analyze AP]]></description>
            <link>https://www.jscode.kr/blog/exercise-case-insensitive-search</link>
            <guid isPermaLink="false">exercise-case-insensitive-search</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 04:20:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[최종 미션] 현업에서 자주 사용하는 AWS 인프라 아키텍처 직접 구축해보기 ]]></title>
            <description><![CDATA[최종 미션이 모든 강의 중에서 가장 중요한 섹션이다. 지금까지 강의를 눈으로 보고 따라해보는 학습이었다. 이런 학습 방법은 내가 실제로 다 이해한 것처럼 착각하게 만든다. 강의의 지식을 완벽하게 습득하기 위해서는 반드시 이 미션을 통해 처음부터 끝까지]]></description>
            <link>https://www.jscode.kr/blog/final-mission-build-aws-infra</link>
            <guid isPermaLink="false">final-mission-build-aws-infra</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[해설 강의] RDS 배치하기 ]]></title>
            <description><![CDATA[✅ [해설 강의] RDS 배치하기 RDS 서브넷 그룹 생성하기 보안 그룹 생성하기 RDS 데이터베이스 생성하기 DBeaver를 활용해 DB 연결 잘 되는 지 확인하기]]></description>
            <link>https://www.jscode.kr/blog/solution-rds</link>
            <guid isPermaLink="false">solution-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[해설 강의] 백엔드 서버 배치하기 ]]></title>
            <description><![CDATA[✅ [해설 강의] 백엔드 서버 배치하기 EC2 인스턴스 생성하기 EC2 인스턴스 한 대 더 생성하기 instagram-server-a에 접속하기 위해 bastion-host로 키 페어 전달 Bastion Host에서 instagram-server-a로]]></description>
            <link>https://www.jscode.kr/blog/solution-backend</link>
            <guid isPermaLink="false">solution-backend</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[해설 강의] VPC 구성하기 ]]></title>
            <description><![CDATA[✅ [해설 강의] VPC 구성하기 VPC 생성하기 서브넷 생성하기 instagram-public-subnet-a / ap-northeast-2a / 10.1.1.0/24 instagram-public-subnet-b / ap-northeast-2b /]]></description>
            <link>https://www.jscode.kr/blog/solution-vpc</link>
            <guid isPermaLink="false">solution-vpc</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[해설 강의] Bastion Host 배치하기 ]]></title>
            <description><![CDATA[✅ [해설 강의] Bastion Host 배치하기 EC2 인스턴스 생성하기 노트북 터미널에서 키 페어를 활용해 접근 호스트 네임 바꾸기 다음 강의에서는 RDS를 배치해보자. ]]></description>
            <link>https://www.jscode.kr/blog/solution-bastion</link>
            <guid isPermaLink="false">solution-bastion</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[해설 강의] ALB 배치하기 ]]></title>
            <description><![CDATA[✅ [해설 강의] ALB 배치하기 보안 그룹 생성 ALB 생성 테스트해보기 여기서 도메인을 적용시킨 뒤에 HTTPS를 적용시키고 싶은 사람들은 추가로 적용시키면 된다. 다음 강의에서는 최소 권한의 원칙에 따라 보안 그룹을 수정해보자.]]></description>
            <link>https://www.jscode.kr/blog/solution-alb</link>
            <guid isPermaLink="false">solution-alb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[해설 강의] 보안 그룹 타이트하게 수정하기 (Bastion Host, ELB, 백엔드 서버, RDS) ]]></title>
            <description><![CDATA[✅ [해설 강의] 보안 그룹 타이트하게 수정하기 (Bastion Host, ELB, 백엔드 서버, RDS) Bastion Host 보안그룹 체크 ALB 보안그룹 체크 백엔드 인스턴스 보안그룹 체크 RDS 인스턴스 보안 그룹 체크 전체적으로 문제 없는 ]]></description>
            <link>https://www.jscode.kr/blog/solution-tighten-security-group</link>
            <guid isPermaLink="false">solution-tighten-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 보안 그룹에 포함되지 않은 주체가 요청을 보내면 어떻게 작동할까? ]]></title>
            <description><![CDATA[✅ 보안 그룹에 포함되지 않은 주체가 요청을 보내면 어떻게 작동할까? 로드 밸런서의 보안 그룹 규칙 수정하기 로드 밸런서로 요청 보내보기 다시 원래대로 보안 그룹의 인바운드 규칙 추가하기 다시 요청 보내보기]]></description>
            <link>https://www.jscode.kr/blog/what-happens-if-requester-not-in-security-group</link>
            <guid isPermaLink="false">what-happens-if-requester-not-in-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[보안 그룹이란? ]]></title>
            <description><![CDATA[✅ 보안 그룹(Security Group)이란? 보안 그룹(Security Group)이란 AWS 클라우드에서의 네트워크 보안을 의미한다. AWS 리소스(EC2 인스턴스)를 집이라고 생각한다면, 보안 그룹은 집 바깥 쪽에 쳐져있는 울타리와 대문이라고 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-security-group</link>
            <guid isPermaLink="false">what-is-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[최소 권한의 원칙(PoLP)이란? ]]></title>
            <description><![CDATA[✅ 최소 권한의 원칙이란? 보안에서 ‘최소 권한의 원칙(PoLP, Principle of least privilege)’이라는 중요한 법칙이 있다. AWS, GCP 등 다양한 클라우드 플랫폼에서도 필수적인 보안 정책으로 활용되고 있다. 최소 권한의 원]]></description>
            <link>https://www.jscode.kr/blog/what-is-principle-of-least-privilege</link>
            <guid isPermaLink="false">what-is-principle-of-least-privilege</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2(Bastion Host)의 보안 그룹 수정하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 그림 살펴보기 Bastion Host에는 관리자(개발자)만 접속한다. ✅ EC2(Bastion Host)에 설정해야 할 보안 그룹 규칙 Bastion Host에는 인프라를 관리하는 개발자만 접속해야 한다. 그래서 인프라를 관리하는 담당자의]]></description>
            <link>https://www.jscode.kr/blog/exercise-modify-bastion-security-group</link>
            <guid isPermaLink="false">exercise-modify-bastion-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 로드 밸런서(ALB)의 보안 그룹 수정하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 그림 살펴보기 인프라 아키텍처 그림을 보면 보안 그룹을 어떻게 셋팅해야 할 지 파악하기 쉽다. 아키텍처 그림을 통해서 ALB에 어떤 트래픽이 들어오는 지 대략적으로 파악해보자. 사용자는 ALB로 요청을 보낸다. ✅ ALB에 설정해야 할 보]]></description>
            <link>https://www.jscode.kr/blog/exercise-modify-alb-security-group</link>
            <guid isPermaLink="false">exercise-modify-alb-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2(백엔드 서버)의 보안 그룹 수정하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 그림 살펴보기 Bastion Host가 EC2 인스턴스(백엔드 서버)에 접근한다. 사용자로부터 ALB가 전달받은 트래픽을 EC2 인스턴스(백엔드 서버)로 전달한다. ✅ EC2(백엔드 서버)에 설정해야 할 보안 그룹 규칙 EC2 인스턴스(백]]></description>
            <link>https://www.jscode.kr/blog/exercise-modify-backend-security-group</link>
            <guid isPermaLink="false">exercise-modify-backend-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RDS(데이터베이스 서버)의 보안 그룹 수정하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 그림 살펴보기 EC2(백엔드 서버)가 RDS에 접근한다. Bastion Host가 RDS에 접근한다. ✅ RDS에 설정해야 할 보안 그룹 규칙 RDS는 Bastion Host가 3306번 포트로 접속할 수 있게 허용해야 한다. RDS는 사]]></description>
            <link>https://www.jscode.kr/blog/exercise-modify-rds-security-group</link>
            <guid isPermaLink="false">exercise-modify-rds-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RDS에 다중 AZ 배포 설정으로 장애 대비하기 ]]></title>
            <description><![CDATA[✅ [실습] RDS에 다중 AZ 배포 설정으로 장애 대비하기 데이터베이스 인스턴스 수정 페이지 들어가기 다중 AZ 배포 설정하기 ✅ 마무리 RDS에 다중 AZ를 적용시켜보면 복제된 DB를 직접 눈으로 확인할 수 있지는 않다. RDS가 내부적으로 아래와]]></description>
            <link>https://www.jscode.kr/blog/exercise-enable-rds-multi-az</link>
            <guid isPermaLink="false">exercise-enable-rds-multi-az</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 프라이빗 서브넷에 있는 RDS에 접속하는 방법 ]]></title>
            <description><![CDATA[✅ 아키텍처 미리 보기 프라이빗 서브넷에 있는 RDS에 접속하려면 VPC 내부에 있는 Bastion Host를 활용해 간접적으로 접근해야 한다. Bastion Host를 활용해 어떻게 접근하는 지 알아보자. ✅ [실습] 프라이빗 서브넷에 있는 RDS에]]></description>
            <link>https://www.jscode.kr/blog/exercise-access-private-rds</link>
            <guid isPermaLink="false">exercise-access-private-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 프라이빗 서브넷에 RDS 인스턴스 추가하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 미리보기 ✅ [실습] 프라이빗 서브넷에 RDS 인스턴스 추가하기 서브넷 그룹 생성하기 RDS 인스턴스를 위한 보안그룹 생성하기 RDS 인스턴스 생성하기 RDS 인스턴스가 잘 생성됐는 지 DBeaver를 활용해 접속해보기]]></description>
            <link>https://www.jscode.kr/blog/exercise-add-rds-to-private-subnet</link>
            <guid isPermaLink="false">exercise-add-rds-to-private-subnet</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2 인스턴스에 Spring Boot 프로젝트 배포하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 미리보기 ✅ [실습] EC2 인스턴스에 Spring Boot 프로젝트 배포하기 Bastion Host에 접속하기 instagram-server 인스턴스에 접속하기 JDK 설치하기 Github으로부터 Spring Boot 프로젝트 clone]]></description>
            <link>https://www.jscode.kr/blog/exercise-deploy-spring-boot-to-ec2</link>
            <guid isPermaLink="false">exercise-deploy-spring-boot-to-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[가용성이란 ? /  시스템 이중화란 ? ]]></title>
            <description><![CDATA[✅ 가용성(Availability) 가용성(Availability)이란 시스템이 서비스를 정상적으로 제공할 수 있는 가능성을 의미한다. 서비스에 장애가 발생할 가능성이 극히 작은 시스템을 가용성이 높은(고가용성) 시스템이라고 말할 수 있다. 반대로 서]]></description>
            <link>https://www.jscode.kr/blog/what-is-availability</link>
            <guid isPermaLink="false">what-is-availability</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[가용 영역이란 ? ]]></title>
            <description><![CDATA[✅ 가용 영역(Availability zone)이란 ? AWS는 자연 재해로 인해 데이터 센터가 파괴될 가능성을 고려해, 물리적으로 분리된 데이터 센터를 구축한다. 이와 같이 물리적으로 분리된 데이터 센터를 보고 가용 영역(Availability zo]]></description>
            <link>https://www.jscode.kr/blog/what-is-availability-zone</link>
            <guid isPermaLink="false">what-is-availability-zone</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 새로운 가용 영역에 EC2 배치하기 ]]></title>
            <description><![CDATA[✅ [실습] 새로운 가용 영역에 EC2 배치하기 EC2 인스턴스 생성 페이지로 이동 EC2 인스턴스 옵션 선택하기 EC2 인스턴스에 접속하기 위해 Bastion Host로 접속하기 instagram-server-b 인스턴스로 접속하기 지금까지 생성한 ]]></description>
            <link>https://www.jscode.kr/blog/exercise-deploy-ec2-in-new-az</link>
            <guid isPermaLink="false">exercise-deploy-ec2-in-new-az</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 가용 영역 2개를 활용해 VPC 구성하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 미리보기 ✅ [실습] 가용 영역 2개를 활용해 VPC 구성하기 VPC 추가하기 서브넷 추가하기 인터넷 게이트웨이 추가하기 NAT 게이트웨이 추가하기 헷갈리지 않게 기존 NAT 게이트웨이 이름 수정 퍼블릭 라우팅 테이블 추가하기 퍼블릭 라우]]></description>
            <link>https://www.jscode.kr/blog/exercise-vpc-with-two-availability-zones</link>
            <guid isPermaLink="false">exercise-vpc-with-two-availability-zones</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RDS의 다중 AZ 배포란? ]]></title>
            <description><![CDATA[✅ RDS의 다중 AZ(Multi AZ) 배포란? 다중 AZ(Multi AZ) 배포란 다른 가용 영역에 RDS 인스턴스의 복제본을 생성해두는 걸 의미한다. 두 데이터베이스를 구분하기 위해 원본 DB를 Primary DB 또는 Master DB라고 부르]]></description>
            <link>https://www.jscode.kr/blog/what-is-rds-multi-az</link>
            <guid isPermaLink="false">what-is-rds-multi-az</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ELB 추가하기 ]]></title>
            <description><![CDATA[✅ 아키텍처 미리보기 ✅ [실습] ELB 추가하기 로드 밸런서에서 사용할 보안 그룹 생성하기 로드 밸런서의 기본 옵션 설정하기 대상 그룹 생성하고 셋팅하기 로드 밸런서 생성하기 로드 밸런서로 요청을 보냈을 때 정상적으로 응답하는 지 확인하기 ✅ 마무리]]></description>
            <link>https://www.jscode.kr/blog/exercise-add-elb</link>
            <guid isPermaLink="false">exercise-add-elb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:50:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[사설 IP(프라이빗 IP) vs 공인 IP(퍼블릭 IP) ]]></title>
            <description><![CDATA[VPC를 생성하려면 ‘사설 IP’와 ‘공인 IP’에 대한 개념도 알고 있어야 한다. ‘사설 IP’와 ‘공인 IP’가 뭔지 알아보자. ✅ 공인 IP란? 공인 IP란 외부 인터넷을 통해 접근할 수 있는 공식적인 주소이다. 퍼블릭 IP라고도 얘기한다. 내 ]]></description>
            <link>https://www.jscode.kr/blog/private-ip-vs-public-ip</link>
            <guid isPermaLink="false">private-ip-vs-public-ip</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 프라이빗 서브넷에 EC2 배치해서 외부 접근 차단하기 ]]></title>
            <description><![CDATA[✅ [실습] 프라이빗 서브넷에 EC2 배치해서 외부 접근 차단하기 EC2 인스턴스 생성 페이지로 이동 EC2 인스턴스 옵션 선택하기 키 페어 생성하기 나머지 EC2 인스턴스 옵션 설정하기 EC2 인스턴스에 접속하기]]></description>
            <link>https://www.jscode.kr/blog/exercise-deploy-ec2-in-private-subnet</link>
            <guid isPermaLink="false">exercise-deploy-ec2-in-private-subnet</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[라우팅 테이블이란? ]]></title>
            <description><![CDATA[✅ 라우팅 테이블(Routing Table)이란? 라우팅 테이블(Routing Table)은 트래픽을 어디로 전송해야 하는 지 경로를 알려주는 테이블이다. Routing Table에서 Routing이 ‘길을 정하다’라는 의미를 내포하고 있는 걸 보면,]]></description>
            <link>https://www.jscode.kr/blog/what-is-route-table</link>
            <guid isPermaLink="false">what-is-route-table</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[목표 설정 ]]></title>
            <description><![CDATA[✅ 목표 설정 어떤 걸 학습할 때는 목표를 머릿속에 떠올리면서 학습하는 게 중요하다. 일종의 퀘스트라고 생각하면 좋다. 게임에서 퀘스트가 주어지면 그 퀘스트를 빨리 깨고싶은 것처럼, 어떤 걸 학습할 때도 목표를 세워두면 조금 더 속도감있게 학습할 수 ]]></description>
            <link>https://www.jscode.kr/blog/define-goals-in-aws-intermediate-course</link>
            <guid isPermaLink="false">define-goals-in-aws-intermediate-course</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[복습] 퍼블릭 서브넷에 EC2 배치하기 ]]></title>
            <description><![CDATA[✅ [복습] 퍼블릭 서브넷에 EC2 인스턴스 배치하기 이번 섹션에서 VPC, CIDR, 사설IP/공인IP, 서브넷, 인터넷 게이트웨이, 라우팅 테이블과 같이 낯선 개념을 한 번에 너무 많이 익혔다. 이렇게 많은 개념은 절대 한 번에 안 익혀진다. 그러]]></description>
            <link>https://www.jscode.kr/blog/review-deploy-ec2-in-public-subnet</link>
            <guid isPermaLink="false">review-deploy-ec2-in-public-subnet</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[NAT 게이트웨이란 ? ]]></title>
            <description><![CDATA[목표 : 프라이빗 서브넷에 데이터베이스 서비스인 EC2 인스턴스를 배치하기 ✅ 프라이빗 서브넷을 사용하기 위해 필요한 셋팅 이전 강의에서 퍼블릭 서브넷으로 사용하기 위해 인터넷 게이트웨이랑 라우팅 테이블을 추가로 셋팅했어야 했다. 하지만 프라이빗 서브]]></description>
            <link>https://www.jscode.kr/blog/what-is-nat-gateway</link>
            <guid isPermaLink="false">what-is-nat-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 퍼블릭 서브넷에 EC2 배치해보기 ]]></title>
            <description><![CDATA[✅ [실습] 퍼블릭 서브넷(Public Subnet)에 EC2 배치해보기 EC2 인스턴스 생성 페이지로 이동 EC2 인스턴스 옵션 선택하기 키 페어 생성하기 나머지 EC2 인스턴스 옵션 설정하기 EC2 인스턴스에 접속하기]]></description>
            <link>https://www.jscode.kr/blog/exercise-deploy-ec2-in-public-subnet</link>
            <guid isPermaLink="false">exercise-deploy-ec2-in-public-subnet</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Bastion Host란? ]]></title>
            <description><![CDATA[✅ Bastion Host란? Bastion의 의미는 성을 보호하기 위해 돌출된 부분을 의미한다. Bastion Host도 이와 비슷한 역할을 한다. Bastion Host는 외부 인터넷에서 내부 네트워크(ex. VPC)에 있는 리소스에 접근할 때 보]]></description>
            <link>https://www.jscode.kr/blog/what-is-bastion-host</link>
            <guid isPermaLink="false">what-is-bastion-host</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 사설 IP(프라이빗 IP)로 통신해보기 ]]></title>
            <description><![CDATA[✅ [실습] 사설 IP(프라이빗 IP)로 통신해보기 EC2 인스턴스 생성 EC2 인스턴스에 접속하기 웹 서버(Nginx) 설치하기 웹 서버가 잘 실행되고 있는 지 접속해보기 ✅ 동일한 네트워크 환경에 EC2 인스턴스 추가하기 기존 EC2 인스턴스의 V]]></description>
            <link>https://www.jscode.kr/blog/exercise-communicate-with-private-ip</link>
            <guid isPermaLink="false">exercise-communicate-with-private-ip</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS 아키텍처 그림으로 표현해보기 ]]></title>
            <description><![CDATA[✅ 지금까지 구축한 인프라 아키텍처 현업에서는 혼자 일하는 게 아니기 때문에 회사에 구축되어 있는 인프라 아키텍처를 문서로 공유받는 경우가 많다. 현업에 빠르게 적응하려면 아래 아키텍처 그림을 보고 해석할 수 있어야 한다. 더 나아가서 AWS 아키텍처]]></description>
            <link>https://www.jscode.kr/blog/draw-aws-architecture</link>
            <guid isPermaLink="false">draw-aws-architecture</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] VPC 생성하기 ]]></title>
            <description><![CDATA[✅ [실습] VPC 생성하기 VPC 페이지로 들어가기 VPC 생성 페이지로 들어가기 VPC 생성하기 ✅ VPC를 10.0.0.0/16으로 설정한 이유 우선 10.0.0.0/16가 어떤 IP 범위를 뜻하는 지 해석해보자. 10진수를 2진수로 바꾼다. C]]></description>
            <link>https://www.jscode.kr/blog/exercise-create-vpc</link>
            <guid isPermaLink="false">exercise-create-vpc</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[인터넷 게이트웨이란? ]]></title>
            <description><![CDATA[✅ 인터넷 게이트웨이(Internet Gateway)란? 인터넷 게이트웨이(Internet Gateway)란 VPC와 외부 인터넷 간에 통신할 수 있게 해주는 장치이다. 이전 강의에서 VPC의 서브넷을 만든 뒤에, 서브넷에 EC2 인스턴스를 생성했는데]]></description>
            <link>https://www.jscode.kr/blog/what-is-internet-gateway</link>
            <guid isPermaLink="false">what-is-internet-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 퍼블릭 서브넷에 Bastion Host 배치하기 ]]></title>
            <description><![CDATA[✅ [실습] 퍼블릭 서브넷에 Bastion Host 배치하기 이전 실습에서 위 아키텍처까지는 이미 구성을 해두었다. 저기 구성에서 보면 web-server의 인스턴스가 이미 Bastion Host 역할을 하고 있다. 따라서 추가로 인프라를 수정해야 하]]></description>
            <link>https://www.jscode.kr/blog/exercise-deploy-bastion-host</link>
            <guid isPermaLink="false">exercise-deploy-bastion-host</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 프라이빗 서브넷의 EC2에 접속하는 방법 ]]></title>
            <description><![CDATA[✅ 프라이빗 서브넷에 접근하는 방법 프라이빗 서브넷(Private Subnet)은 외부에서 접근이 불가능하다고 얘기했다. 하지만 같은 VPC 내부에서는 퍼블릭 서브넷의 리소스와 프라이빗 서브넷의 리소스가 자유자재로 통신이 가능하다는 점을 활용해서 프라]]></description>
            <link>https://www.jscode.kr/blog/exercise-access-private-ec2</link>
            <guid isPermaLink="false">exercise-access-private-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] CIDR 표기법 해석하기 ]]></title>
            <description><![CDATA[✅ 예제 1) 10.88.135.0/24가 의미하는 IP 주소 범위는 ? 풀이 ✅ 예제 2) 25.212.157.0/25가 의미하는 IP 주소 범위는 ? 풀이 ✅ 예제 3) 25.212.157.128/25가 의미하는 IP 주소 범위는 ? 풀이 ✅ 예제]]></description>
            <link>https://www.jscode.kr/blog/exercise-interpret-cidr</link>
            <guid isPermaLink="false">exercise-interpret-cidr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CIDR이란? / CIDR 표기법 해석 방법 ]]></title>
            <description><![CDATA[✅ CIDR이란? IP 주소의 범위를 나타내기 위한 표기 방법이다. ✅ CIDR 표기법을 이해하려면 알아야 하는 배경지식 IP 구성 10진수와 2진수를 서로 변환하는 법 ✅ CIDR로 표기된 값을 해석하는 방법을 알아보자. 10진수를 2진수로 바꾼다.]]></description>
            <link>https://www.jscode.kr/blog/what-is-cidr</link>
            <guid isPermaLink="false">what-is-cidr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 서브넷 생성하기 ]]></title>
            <description><![CDATA[✅ [실습] 서브넷 생성하기 서브넷 생성 페이지로 들어가기 서브넷 생성하기 서브넷 생성 완료]]></description>
            <link>https://www.jscode.kr/blog/exercise-create-subnet</link>
            <guid isPermaLink="false">exercise-create-subnet</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] NAT 게이트웨이 생성하기 ]]></title>
            <description><![CDATA[✅ [실습] NAT 게이트웨이 생성하기 이전 실습에서 프라이빗 서브넷까지 생성해두었으므로 바로 NAT 게이트웨이를 생성해보자. NAT 게이트웨이 생성 페이지로 이동하기 NAT 게이트웨이 생성하기 라우팅 테이블 생성하기 라우팅 테이블에 서브넷 연결하기 ]]></description>
            <link>https://www.jscode.kr/blog/exercise-create-nat-gateway</link>
            <guid isPermaLink="false">exercise-create-nat-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인터넷 게이트웨이 생성하기 ]]></title>
            <description><![CDATA[✅ [실습] 인터넷 게이트웨이 생성하기 인터넷 게이트웨이 생성 페이지로 이동하기 인터넷 게이트웨이 생성하기 인터넷 게이트웨이 연결하기 정상적으로 VPC에 인터넷 게이트웨이까지 연결을 했다. 하지만 마지막으로 라우팅 테이블까지 잘 셋팅해주어야 외부 인터]]></description>
            <link>https://www.jscode.kr/blog/exercise-create-internet-gateway</link>
            <guid isPermaLink="false">exercise-create-internet-gateway</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 라우팅 테이블 생성하기 ]]></title>
            <description><![CDATA[✅ [실습] 라우팅 테이블 생성하기 라우팅 테이블 생성 페이지로 들어가기 라우팅 테이블 생성하기 라우팅 테이블에 서브넷 연결하기 라우팅 편집하기 EC2 인스턴스에 접속이 되는 지 확인해보자. 지금까지 우리는 외부 인터넷에 접속할 수 있는 서브넷을 만들]]></description>
            <link>https://www.jscode.kr/blog/exercise-create-route-table</link>
            <guid isPermaLink="false">exercise-create-route-table</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[서브넷이란 ? ]]></title>
            <description><![CDATA[✅ 서브넷(Subnet)이란? 서브넷이란 하나의 큰 네트워크(VPC, 회사 네트워크 등)를 작은 네트워크 단위로 나눈 것을 의미한다. 하나의 글은 여러 개의 단락으로 나뉘어진다. 하나의 아파트는 여러 개의 동으로 나뉘어진다. 하나의 영화는 여러개의 씬]]></description>
            <link>https://www.jscode.kr/blog/what-is-subnet</link>
            <guid isPermaLink="false">what-is-subnet</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[VPC란? / VPC를 왜 쓰는 걸까? ]]></title>
            <description><![CDATA[이번 강의에서 가장 중요한 개념이면서도 현업에서 필수로 활용하는 VPC를 배워보자. 이번 강의에서 VPC 하나만 제대로 익혀서 쓸 줄만 알아도 이번 강의의 핵심을 다 배웠다봐도 과언이 아니다. ✅ VPC는 어떤 장점을 가지고 있길래 많이 쓰는 걸까 ?]]></description>
            <link>https://www.jscode.kr/blog/what-is-vpc</link>
            <guid isPermaLink="false">what-is-vpc</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:49:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로드 밸런서(Load Balancer)란? ]]></title>
            <description><![CDATA[✅ 로드 밸런서(Load Balancer)란? 서비스를 운영하다보면 점점 많은 트래픽(부하)이 발생해 한 대의 서버로는 사양이 부족한 경우가 발생하게 된다. 이걸 해결하기 위해 위와 같이 서버를 여러 대로 늘려서 서버를 운영한다. 하지만 사용자보고 여]]></description>
            <link>https://www.jscode.kr/blog/what-is-load-balancer</link>
            <guid isPermaLink="false">what-is-load-balancer</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] IP당 요청 수 제한하기 ]]></title>
            <description><![CDATA[✅ IP당 요청 수 제한하기 Untitled 위 강의에서 리버스 프록시(Reverse Proxy) 서버의 역할은 들어오는 요청을 관리하고 보안 처리하는 것이라고 얘기했다. 대표적인 사용 예시가 요청 수를 제한하는 것이다. 요청 수를 제한함으로써 악의적]]></description>
            <link>https://www.jscode.kr/blog/rate-limit-by-ip</link>
            <guid isPermaLink="false">rate-limit-by-ip</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 리버스 프록시를 활용해 Spring Boot 서버 배포하기 ]]></title>
            <description><![CDATA[✅ 리버스 프록시를 활용해 Spring Boot 서버 배포하기 JDK 17 설치하기 Github으로부터 Spring Boot 프로젝트 클론 받기 Spring Boot 서버 실행시키기 Spring Boot 서버가 잘 작동하는 지 확인하기 Nginx 설정]]></description>
            <link>https://www.jscode.kr/blog/deploy-spring-boot-using-reverse-proxy</link>
            <guid isPermaLink="false">deploy-spring-boot-using-reverse-proxy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[리버스 프록시(Reverse Proxy)란? ]]></title>
            <description><![CDATA[✅ 프록시(Proxy)란? 프록시(Proxy)란 ‘중계(중간에서 연결해주는 것)’의 의미를 가진다. 그러면 프록시 서버(Proxy Server)는 중간 역할을 해주는 서버다. 그림으로 바로 살펴보자. 위 그림에서 두 번째 그림을 보면 클라이언트(사용자]]></description>
            <link>https://www.jscode.kr/blog/what-is-reverse-proxy</link>
            <guid isPermaLink="false">what-is-reverse-proxy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Nginx, Certbot을 활용해 HTTPS 적용시키기 ]]></title>
            <description><![CDATA[✅ Nginx, Certbot을 활용해 HTTPS 적용시키기 참고 문서 : https://certbot.eff.org/instructions?ws=nginx&os=snap Certbot 설치하기 HTTPS 인증서 발급받기 HTTPS 잘 적용됐는 지 확]]></description>
            <link>https://www.jscode.kr/blog/apply-https-with-nginx-and-certbot</link>
            <guid isPermaLink="false">apply-https-with-nginx-and-certbot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[HTTPS를 왜 적용시켜야 할까? ]]></title>
            <description><![CDATA[✅ HTTPS를 왜 적용시켜야 할까? HTTPS를 적용시켜야 하는 이유는 무엇일까? 보안적인 이유 사용자 이탈 ✅ 현업에서는 ? 대부분의 웹 사이트에서 HTTPS를 적용시킨다. ✅ Nginx를 활용한 HTTPS 적용 Nginx가 사용자(클라이언트)와 ]]></description>
            <link>https://www.jscode.kr/blog/why-enable-https</link>
            <guid isPermaLink="false">why-enable-https</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Nginx, Certbot이 작성한 HTTPS 관련 코드 해석하기 ]]></title>
            <description><![CDATA[✅ Nginx, Certbot이 작성한 HTTPS 관련 코드 해석하기 Certbot이 작성한 아래 코드는 직접 작성할 수 있을 필요까지는 없다. 다만, 대략적으로 어떤 의미를 가지고 있는 지 해석할 수는 있어야 한다. /etc/nginx/conf.d/]]></description>
            <link>https://www.jscode.kr/blog/interpret-https-config-generated-by-certbot</link>
            <guid isPermaLink="false">interpret-https-config-generated-by-certbot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot 서버에 도메인 적용하기 ]]></title>
            <description><![CDATA[✅ Spring Boot 서버에 도메인 적용하기 도메인 설정 변경하기 리버스 프록시 설정이 잘 적용됐는 지 확인하기 도메인 주소를 통해 백엔드 서버와 통신이 잘 되는 걸 확인했다. 하지만 HTTPS 적용이 되어 있지 않기 때문에 보안적으로 취약할 수 ]]></description>
            <link>https://www.jscode.kr/blog/apply-domain-to-spring-boot</link>
            <guid isPermaLink="false">apply-domain-to-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 설정 파일 분리해서 관리하기 (include) ]]></title>
            <description><![CDATA[✅ 설정 파일을 분리해야 하는 이유 지금까지 셋팅된 설정 관련 코드만으로도 꽤 복잡해졌다. default.conf server {
        server_name jscode.p-e.kr;

        location / {
          ]]></description>
            <link>https://www.jscode.kr/blog/separate-config-with-include</link>
            <guid isPermaLink="false">separate-config-with-include</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 하나의 EC2에서 백엔드 서버 2개를 로드 밸런싱 시키기 ]]></title>
            <description><![CDATA[✅ 구현하고자 하는 인프라 구성 ✅ 하나의 EC2에서 백엔드 서버 2개를 로드밸런싱 시키기 EC2에 백엔드 서버(Spring Boot) 2개 띄우기 8080번 포트, 8081번 포트에 Spring Boot 서버가 잘 띄워졌는 지 확인하기 Nginx 설]]></description>
            <link>https://www.jscode.kr/blog/load-balance-two-backend-servers-in-one-ec2</link>
            <guid isPermaLink="false">load-balance-two-backend-servers-in-one-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot 서버에 HTTPS 적용하기 ]]></title>
            <description><![CDATA[✅ Spring Boot 서버에 HTTPS 적용하기 HTTPS 인증서 발급받기 HTTPS 잘 적용됐는 지 확인하기 Nginx 설정 파일 확인해보기]]></description>
            <link>https://www.jscode.kr/blog/apply-https-to-spring-boot</link>
            <guid isPermaLink="false">apply-https-to-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:45:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Nginx 기본 문법 응용해보기 - 2 ]]></title>
            <description><![CDATA[✅ Nginx의 기본 웹 페이지를 Hello World 페이지로 바꿔보기 사용자가 /라는 주소로 접속했을 때 /usr/share/nginx/html/index.html 페이지가 아니라, /usr/share/nginx/html/hello.html 페이지]]></description>
            <link>https://www.jscode.kr/blog/nginx-config-practice-2</link>
            <guid isPermaLink="false">nginx-config-practice-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 웹 프론트엔드 프로젝트(React + Vite) 배포하기 ]]></title>
            <description><![CDATA[✅ 웹 프론트엔드 프로젝트(React + Vite) 배포하기 이전에 웹 프론트엔드 프로젝트를 완성시켜서 Github Repository에 올려뒀다고 가정하자. React 프로젝트를 EC2로 가져오기 React 프로젝트 빌드를 위해 Node.js 설치하]]></description>
            <link>https://www.jscode.kr/blog/deploy-frontend-react-vite-with-nginx</link>
            <guid isPermaLink="false">deploy-frontend-react-vite-with-nginx</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 하나의 EC2에서 여러 웹 사이트 배포하기 ]]></title>
            <description><![CDATA[✅ 하나의 EC2에서 여러 웹 사이트 배포하기 기존 Nginx 설정 파일 삭제하기 Nginx 설정 파일 작성하기 Nginx 설정 파일 반영하기 웹 페이지 접속해보기 ✅ 전체 구조 다시 짚어보기]]></description>
            <link>https://www.jscode.kr/blog/host-multiple-websites-on-one-ec2</link>
            <guid isPermaLink="false">host-multiple-websites-on-one-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[한 서버에서 다른 도메인을 가진 여러 웹 사이트를 배포하려면?! ]]></title>
            <description><![CDATA[✅ 한 서버에서 여러 웹 사이트를 배포하려면?! 일반적으로 배포된 웹 사이트를 보면 IP 주소로 접근하지 않고 도메인 주소로 접근을 한다. 왜냐하면 IP 주소는 기억하기 어렵기 때문이다. 그래서 대부분의 웹 사이트는 도메인 주소를 가지고 있다. 도메인]]></description>
            <link>https://www.jscode.kr/blog/how-to-host-multiple-sites-on-one-server</link>
            <guid isPermaLink="false">how-to-host-multiple-sites-on-one-server</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Nginx 기본 문법 응용해보기 - 1 ]]></title>
            <description><![CDATA[기본 문법을 해석하고 정리했다면 하나씩 바꿔가면서 응용해봐야 한다. 이렇게도 가지고 놀아보고, 저렇게도 가지고 놀아봐야 한다. 그러면서 코드를 하나씩 수정하면서 의도한대로 작동하는 지 눈으로 확인하는 작업을 반드시 거쳐야 한다. 이렇게 학습하면 정말 ]]></description>
            <link>https://www.jscode.kr/blog/nginx-config-practice-1</link>
            <guid isPermaLink="false">nginx-config-practice-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 자료] vim 사용법 ]]></title>
            <description><![CDATA[리눅스에서 vim을 한 번도 사용해보시지 않은 분들을 아래 자료를 첨부합니다. vim 사용법을 먼저 숙지한 이후에 다음 강의를 따라와주세요:D]]></description>
            <link>https://www.jscode.kr/blog/vim-guide</link>
            <guid isPermaLink="false">vim-guide</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Nginx 기본 문법 해석하기 ]]></title>
            <description><![CDATA[✅ Nginx의 기본적인 문법을 알아야 하는 이유 Nginx를 설치하고 실행시키면 아래와 같은 웹 페이지가 뜬다. 하지만 아래 웹 페이지가 아닌 우리가 직접 만든 웹 페이지를 띄우고 싶을 것이다. 그러려면 Nginx의 기본적인 문법을 어느 정도 알고 ]]></description>
            <link>https://www.jscode.kr/blog/nginx-config-basics</link>
            <guid isPermaLink="false">nginx-config-basics</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 웹 프론트엔드 프로젝트(Next.js) 배포하기 ]]></title>
            <description><![CDATA[✅ 웹 프론트엔드 프로젝트(Next.js) 배포하기 이전에 웹 프론트엔드 프로젝트를 완성시켜서 Github Repository에 올려뒀다고 가정하자. Next.js 프로젝트를 EC2로 가져오기 Next.js 프로젝트 빌드를 위해 Node.js 설치하기]]></description>
            <link>https://www.jscode.kr/blog/deploy-frontend-nextjs-with-nginx</link>
            <guid isPermaLink="false">deploy-frontend-nextjs-with-nginx</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 웹 프론트엔드 프로젝트(HTML, CSS,  JS) 배포하기 ]]></title>
            <description><![CDATA[✅ 웹 프론트엔드 프로젝트(HTML, CSS, JS) 배포하기 이전에 웹 사이트를 완성시켜서 Github Repository에 올려뒀다고 가정하자. HTML, CSS, JS 웹 프로젝트를 EC2로 가져오기 Nginx 설정 파일 수정하기 Nginx 설정]]></description>
            <link>https://www.jscode.kr/blog/deploy-frontend-html-css-js-with-nginx</link>
            <guid isPermaLink="false">deploy-frontend-html-css-js-with-nginx</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] Nginx 디버깅 방법 ]]></title>
            <description><![CDATA[개발을 하다보면 에러를 디버깅하고 해결하는 데에만 대부분의 시간을 쓴다. 따라서 어떤 기술을 익힐 때 반드시 에러를 디버깅 할 수 있는 방법을 정리해두어야 한다. ✅ 에러 상황 /etc/nginx/conf.d/default.conf server {
 ]]></description>
            <link>https://www.jscode.kr/blog/nginx-debugging</link>
            <guid isPermaLink="false">nginx-debugging</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 무료 도메인 구매 후 EC2에 연결하기 ]]></title>
            <description><![CDATA[React로 만든 홈페이지는 jscode.p-e.kr이라는 도메인 주소로 접근하게 만들고 싶고, Next.js로 만든 홈페이지는 admin.jscode.p-e.kr이라는 도메인 주소로 접근하게 만들고 싶다고 가정하자. ✅ 무료 도메인 구매 후 EC2에]]></description>
            <link>https://www.jscode.kr/blog/buy-free-domain-and-connect-to-ec2</link>
            <guid isPermaLink="false">buy-free-domain-and-connect-to-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[웹 서버(Web Server)란? ]]></title>
            <description><![CDATA[Nginx를 활용해 웹 사이트를 배포할 수 있다. 이걸 보고 ‘Nginx가 웹 서버(Web Server) 역할을 한다’라고 얘기한다. 웹 서버(Web Server)가 뭔지 알아보자. ✅ 우리는 어떻게 네이버에 접속할 수 있는걸까? 웹 서버(Web Se]]></description>
            <link>https://www.jscode.kr/blog/what-is-web-server</link>
            <guid isPermaLink="false">what-is-web-server</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:44:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Apache 쓰면 안 되나요? 왜 굳이 Nginx를 써야 되는거죠?]]></title>
            <description><![CDATA[✅ Apache vs Nginx Apache와 Nginx의 차이를 디테일하게 설명하면 내용이 어려워지고 재미없어진다. Nginx를 배우는 데 지금 이 내용은 크게 중요하지 않기 때문에 간단하게만 설명하겠다. Nginx가 등장하기 전에는 대부분의 회사에]]></description>
            <link>https://www.jscode.kr/blog/why-not-apache-vs-nginx</link>
            <guid isPermaLink="false">why-not-apache-vs-nginx</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:43:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Nginx 설치 및 실행하기 ]]></title>
            <description><![CDATA[✅ Ubuntu 환경에서 Nginx 설치하기 # apt에서 설치 가능한 패키지 리스트(최신 패키지, 버전 등)를 최신화시킨다.
# apt는 리눅스에서 사용되는 소프트웨어 패키지를 설치 및 관리할 수 있게 도와주는 툴이다.
# npm 또는 gradle과]]></description>
            <link>https://www.jscode.kr/blog/install-and-run-nginx</link>
            <guid isPermaLink="false">install-and-run-nginx</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:43:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[공부 Tip] 리눅스 명령어를 잘 모르시는 분들을 위한 공부 방법 ]]></title>
            <description><![CDATA[✅ 리눅스 명령어를 잘 모르시는 분들을 위한 공부 방법 위와 같은 검은 화면이 낯설게 느껴지는 사람들이 있을 수 있다. 처음엔 다 그렇다. 개발자는 윈도우(Windows), 맥(MacOS)보다 리눅스(Linux) 환경에 익숙해질 수 있어야 한다. 리눅]]></description>
            <link>https://www.jscode.kr/blog/linux-command-study-tip</link>
            <guid isPermaLink="false">linux-command-study-tip</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:43:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Nginx 로그 확인하는 방법 ]]></title>
            <description><![CDATA[✅ 로그 확인하는 방법을 알아야 하는 이유 Spring Boot 또는 Nest.js와 같은 프레임워크를 활용해서 개발할 때 콘솔창을 자주 확인한다. 콘솔창을 보면서 에러 메시지가 뜨는 지, 잘 작동하는 지 확인하면서 개발 작업을 한다. 리눅스에서 콘솔]]></description>
            <link>https://www.jscode.kr/blog/how-to-check-nginx-logs</link>
            <guid isPermaLink="false">how-to-check-nginx-logs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:43:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS EC2 인스턴스 생성하기 ]]></title>
            <description><![CDATA[✅ EC2 인스턴스 생성하기]]></description>
            <link>https://www.jscode.kr/blog/create-aws-ec2</link>
            <guid isPermaLink="false">create-aws-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:43:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Nginx를 왜 배우는 걸까? ]]></title>
            <description><![CDATA[✅ Nginx를 왜 배우는 걸까? 현업에서 Nginx를 안 쓰고 있는 기업을 찾기가 어려울 정도로 많이 사용하는 프로그램이다. 현업에서 많이 쓰고 있다는 건, (백엔드) 개발자로 취업을 하기 위해 필수로 알아야 하는 기술일 가능성이 높다는 뜻이다. 그]]></description>
            <link>https://www.jscode.kr/blog/why-learn-nginx</link>
            <guid isPermaLink="false">why-learn-nginx</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:43:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS RDS 셋팅하기 ]]></title>
            <description><![CDATA[✅ AWS RDS 생성하기 RDS 생성하기 잘 접속되는 지 확인하기]]></description>
            <link>https://www.jscode.kr/blog/exercise-setup-aws-rds</link>
            <guid isPermaLink="false">exercise-setup-aws-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2에 간단한 API 서버 셋팅하기 ]]></title>
            <description><![CDATA[AWS에 초점을 맞춘 강의가 아니기 때문에 EC2, RDS, ELB에 대한 디테일한 설명은 생략할 예정이다. 혹시 AWS에 대한 기본기를 다지고 싶다면 아래 강의를 추천한다. 

비전공자도 이해할 수 있는 AWS 입문/실전 (https://inf.ru]]></description>
            <link>https://www.jscode.kr/blog/exercise-setup-simple-api-server-on-ec2</link>
            <guid isPermaLink="false">exercise-setup-simple-api-server-on-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] RDS 모니터링 셋팅하기 ]]></title>
            <description><![CDATA[✅ RDS 모니터링 셋팅하기 EC2와 비슷하게 RDS도 생성하면 기본적으로 수집하는 지표들이 있다. CPU 사용률 (CPUUtilization) FreeableMemory (사용 가능한 메모리 용량) 등등 RDS는 별도의 설정을 하지 않더라도 1분 간]]></description>
            <link>https://www.jscode.kr/blog/exercise-monitor-rds</link>
            <guid isPermaLink="false">exercise-monitor-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[처리량(Throughput), 지연 시간(Latency) ]]></title>
            <description><![CDATA[✅ 처리량(Throughput)이란? 부하 테스트에서 서비스가 1초당 처리할 수 있는 트래픽 양을 보고 Throughput이라고 부른다. 단위는 TPS(Transaction Per Seconds, 1초당 처리한 트랜잭션의 수)를 많이 활용한다. 만약 ]]></description>
            <link>https://www.jscode.kr/blog/throughput-and-latency</link>
            <guid isPermaLink="false">throughput-and-latency</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2에 부하 테스트 툴 셋팅하기 ]]></title>
            <description><![CDATA[✅ EC2 인스턴스 생성하기 충분한 부하를 만들어내기 위해 인스턴스를 t3a.small로 생성할 예정이다. ✅ EC2에 부하테스트 툴 셋팅하기 k6 설치 k6 잘 설치됐는 지 확인하기 ✅ 주의점 부하 테스트 환경 독립적으로 분리 부하 테스트 툴을 개인]]></description>
            <link>https://www.jscode.kr/blog/exercise-install-load-testing-tool-on-ec2</link>
            <guid isPermaLink="false">exercise-install-load-testing-tool-on-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] ELB의 CPU, 메모리는 왜 측정하지 않나요? ]]></title>
            <description><![CDATA[✅ ELB의 CPU, 메모리는 왜 측정하지 않나요? AWS에서 ELB를 만들 때 1초당 수백만 개의 요청을 처리할 수 있게끔 고사양 컴퓨터를 여러 대 셋팅해뒀다. 다른 말로 표현하자면, ELB 때문에 성능 저하가 일어날 가능성은 아주 적으니 신경쓰지 ]]></description>
            <link>https://www.jscode.kr/blog/why-not-measure-elb-cpu-and-memory</link>
            <guid isPermaLink="false">why-not-measure-elb-cpu-and-memory</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[부하 테스트의 전체 흐름 ]]></title>
            <description><![CDATA[✅ 1. 부하 테스트 필요성 인식 “서비스를 오픈하려고 하는데 사용자들이 몰려서 서버가 터지면 어떡하지?” “내 서버는 어느 정도 사용자 요청을 견딜 수 있는 거지?” “개발자님, 이번에 치킨 이벤트를 하려하는데 사용자가 1만명 정도가 들어와도 서버가]]></description>
            <link>https://www.jscode.kr/blog/overall-load-test-flow</link>
            <guid isPermaLink="false">overall-load-test-flow</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 병목 지점(웹 애플리케이션 서버) 해결하기 ]]></title>
            <description><![CDATA[✅ EC2의 성능 개선 방향 잡기 병목 지점이 EC2라는 건 확인했다. EC2를 성능 개선할 때는 크게 4가지 방향성이 있다고 설명했다. a와 b에 대해서는 해당 사항이 없으므로, 시스템 이중화의 장점을 가지고 있는 ‘수평적 확장’의 방식으로 성능을 ]]></description>
            <link>https://www.jscode.kr/blog/exercise-fix-webapp-bottleneck</link>
            <guid isPermaLink="false">exercise-fix-webapp-bottleneck</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2 모니터링 셋팅하기 ]]></title>
            <description><![CDATA[✅ EC2가 수집하는 기본 지표들 EC2 인스턴스를 생성하면 기본적으로 수집하는 지표들이 있다. CPU 사용률(CPUUtilization) 네트워크 사용률(NetworkIn, NetworkOut) 디스크 성능(DiskReadOps, DiskWriteO]]></description>
            <link>https://www.jscode.kr/blog/exercise-monitor-ec2</link>
            <guid isPermaLink="false">exercise-monitor-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[모니터링(Monitoring), 메트릭(Metric) ]]></title>
            <description><![CDATA[✅ 모니터링(Monitoring)이란? 모니터링(Monitoring)이란 어떤 대상을 지속적으로 감시한다는 뜻이다. 부하 테스트에서 모니터링(Monitoring)은 왜 필요할까? 부하 테스트 과정 중에 성능을 개선하려면 병목 지점을 먼저 파악해야 한다]]></description>
            <link>https://www.jscode.kr/blog/monitoring-and-metrics</link>
            <guid isPermaLink="false">monitoring-and-metrics</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 실시간으로 CPU와 메모리를 관측하는 방법 ]]></title>
            <description><![CDATA[CPU, 메모리를 1초 간격으로 관측하고 싶을 수도 있다. 하지만 CloudWatch는 1분 간격으로만 측정을 하기 때문에 한계가 있다. 그래서 실시간으로 CPU, 메모리를 관측할 수 있는 방법을 알려줄 예정이다. ✅ 실시간으로 EC2의 CPU와 메모]]></description>
            <link>https://www.jscode.kr/blog/how-to-monitor-cpu-and-memory-real-time</link>
            <guid isPermaLink="false">how-to-monitor-cpu-and-memory-real-time</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS ELB 생성하기 ]]></title>
            <description><![CDATA[✅ AWS ELB 생성하기 리전 선택하기 로드 밸런서 생성하기 로드 밸런서 유형 선택하기 기본 구성 설정하기 네트워크 매핑 설정하기 AWS EC2 페이지의 보안 그룹에서 보안 그룹 생성하기 ELB 만드는 창으로 돌아와서 보안 그룹 등록하기 대상 그룹(]]></description>
            <link>https://www.jscode.kr/blog/exercise-create-aws-elb</link>
            <guid isPermaLink="false">exercise-create-aws-elb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 사용하지 않는 EC2 종료하기 ]]></title>
            <description><![CDATA[✅ 사용하지 않는 EC2 종료하기 api-server라고 이름 붙인 EC2 인스턴스는 이제 사용하지 않을 예정이라 종료해주자. 하지만 k6-server라고 이름 붙인 EC2 인스턴스는 부하 테스트할 때 써야 하기 때문에 남겨두자. ]]></description>
            <link>https://www.jscode.kr/blog/exercise-shutdown-unused-ec2</link>
            <guid isPermaLink="false">exercise-shutdown-unused-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[부하 테스트 툴 선정 (k6) ]]></title>
            <description><![CDATA[✅ k6란? 부하테스트 툴에는 다양한 툴이 있다. 그 중 유명한 부하테스트 툴에는 ngrinder, jmeter, ab, locust 등이 있다. 그 중 메모리를 적게 사용하면서 비교적 많은 요청 수를 보낼 수 있는 부하 테스트 툴이 k6이다. 또한 ]]></description>
            <link>https://www.jscode.kr/blog/choosing-load-test-tool-k6</link>
            <guid isPermaLink="false">choosing-load-test-tool-k6</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 부하 테스트 할 인프라 구성을 그림으로 파악하기 ]]></title>
            <description><![CDATA[부하 테스트를 할 때 병목 지점을 찾는 게 핵심이다. 병목 지점을 쉽게 찾으려면 트래픽이 거쳐가는 인프라가 어떤 것들이 있는 지 파악해야 한다. 따라서 부하 테스트를 하기 전에 인프라 아키텍처에 대한 전체적인 그림을 먼저 그려보는 걸 추천한다. ✅ 인]]></description>
            <link>https://www.jscode.kr/blog/exercise-draw-infra-for-load-test</link>
            <guid isPermaLink="false">exercise-draw-infra-for-load-test</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS EC2 셋팅하기 ]]></title>
            <description><![CDATA[AWS에 초점을 맞춘 강의가 아니기 때문에 EC2, RDS, ELB에 대한 디테일한 설명은 생략할 예정이다. 혹시 AWS에 대한 기본기를 다지고 싶다면 아래 강의를 추천한다. 

비전공자도 이해할 수 있는 AWS 입문/실전 (https://inf.ru]]></description>
            <link>https://www.jscode.kr/blog/exercise-setup-aws-ec2</link>
            <guid isPermaLink="false">exercise-setup-aws-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[부하 테스트 시 주의점 ]]></title>
            <description><![CDATA[✅ 적절한 부하 테스트 시간 1분 간격으로 기록되는 모니터링 도구를 가지고 정확하게 성능을 측정하려면 최소 5분간의 부하테스트는 진행해야 한다. 그래야 일관된 결과값을 얻을 수 있다. ✅ 프로덕션 환경과 비슷한 데이터 셋팅 데이터베이스는 데이터가 어떻]]></description>
            <link>https://www.jscode.kr/blog/load-test-cautions</link>
            <guid isPermaLink="false">load-test-cautions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[병목 지점 (]]></title>
            <description><![CDATA[✅ 병목 지점(Bottleneck Point)이란? 부하테스트에서 병목 지점(Bottleneck Point)이라는 말을 많이 사용한다. 병목 지점(Bottleneck Point)이란, 전체 시스템에서 특정 서버 자원(CPU, Memory 등)이 한계에]]></description>
            <link>https://www.jscode.kr/blog/what-is-bottleneck</link>
            <guid isPermaLink="false">what-is-bottleneck</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[부하 테스트의 전체 흐름 다시 점검 ]]></title>
            <description><![CDATA[✅ 1. 부하 테스트 필요성 인식 “서비스를 오픈하려고 하는데 사용자들이 몰려서 서버가 터지면 어떡하지?” “내 서버는 어느 정도 사용자 요청을 견딜 수 있는 거지?” “개발자님, 이번에 치킨 이벤트를 하려하는데 사용자가 1만명 정도가 들어와도 서버가]]></description>
            <link>https://www.jscode.kr/blog/review-load-test-flow</link>
            <guid isPermaLink="false">review-load-test-flow</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 각 서버의 CPU, 메모리를 한 눈에 볼 수 있도록 셋팅하기 ]]></title>
            <description><![CDATA[✅ 각 서버의 CPU, 메모리를 한 눈에 볼 수 있도록 셋팅하기 병목 지점을 알아내기 위해 EC2, RDS의 CPU 사용률과 메모리 사용률을 한 눈에 볼 수 있도록 셋팅해볼 것이다. CloudWatch 페이지 들어가기 대시보드 생성하기 위젯(EC2 C]]></description>
            <link>https://www.jscode.kr/blog/exercise-monitor-all-servers-at-once</link>
            <guid isPermaLink="false">exercise-monitor-all-servers-at-once</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[가용성(Availability), 시스템 이중화 ]]></title>
            <description><![CDATA[대규모 트래픽을 처리하기 위해 시스템을 고도화해야 한다. 고도화 할 때 성능(Throughput, Latency)만 신경쓰면 안 된다. ‘가용성(Availability)’도 같이 신경쓰면서 시스템을 고도화해야 한다. 그럼 지금부터 가용성(Availab]]></description>
            <link>https://www.jscode.kr/blog/availability-and-redundancy</link>
            <guid isPermaLink="false">availability-and-redundancy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[수평적 확장, 수직적 확장, 캐싱 ]]></title>
            <description><![CDATA[시스템의 성능을 개선할 때 가장 많이 활용하는 3가지 전략을 알아보자. ✅ 수평적 확장 특정 시스템 성능을 올리기 위해 시스템 개수를 늘리는 걸 수평적 확장이라고 한다. [장점] 시스템 이중화 → 가용성 증가 확장에 제한이 없음 서버 축소/확장이 쉬움]]></description>
            <link>https://www.jscode.kr/blog/horizontal-vs-vertical-scaling-and-caching</link>
            <guid isPermaLink="false">horizontal-vs-vertical-scaling-and-caching</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[트래픽 증가에 따른 시스템 설계 및 확장 방법 ]]></title>
            <description><![CDATA[부하 테스트를 하면서 목표로 설정해놓은 Throughput, Latency를 달성하기 위해 성능 개선을 해야 한다. 병목 지점이 어디서 발생하느냐에 따라 성능 개선의 방법이 달라진다. 이 방법에 대해 대략적으로 알아놓아야 성능 개선을 수월하게 할 수 ]]></description>
            <link>https://www.jscode.kr/blog/system-design-scaling-strategy</link>
            <guid isPermaLink="false">system-design-scaling-strategy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 내가 구성한 인프라는 1초당 몇 개의 요청을 견뎌낼 수 있을까? ]]></title>
            <description><![CDATA[✅ 부하 테스트 할 인프라 구성 부하 테스트를 하기 전에 인프라의 전체 구성을 그림으로 그려놓으면, 전체적인 트래픽의 흐름을 한 눈에 파악할 수 있어서 편리하다. ✅ k6를 활용해 부하 테스트 진행하기 프로덕션 환경과 비슷하게 구성하기 위해 더미 데이]]></description>
            <link>https://www.jscode.kr/blog/exercise-how-many-rps-my-infra-can-handle</link>
            <guid isPermaLink="false">exercise-how-many-rps-my-infra-can-handle</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[현업에서 부하 테스트를 왜 할까? ]]></title>
            <description><![CDATA[✅ 부하 테스트란? 시스템이 어느 정도의 부하(= 트래픽, 요청)를 견딜 수 있는 지 테스트하는 것 ✅ 현업에서 부하 테스트를 왜 할까? 백엔드 서버를 구현하고 나서 배포를 한다. 그런데 프로덕션 환경에 서비스를 배포 하기 전에 문득 이런 생각이 들 ]]></description>
            <link>https://www.jscode.kr/blog/why-load-testing-in-production</link>
            <guid isPermaLink="false">why-load-testing-in-production</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견뎌낼 수 있을까? ]]></title>
            <description><![CDATA[✅ 부하 테스트 할 인프라 구성 부하 테스트를 하기 전에 인프라의 전체 구성을 그림으로 그려놓으면, 전체적인 트래픽의 흐름을 한 눈에 파악할 수 있어서 편리하다. ✅ k6를 활용해 부하 테스트 진행하기 백엔드 서버에 부하를 주기 위해 k6 스크립트 작]]></description>
            <link>https://www.jscode.kr/blog/exercise-how-many-requests-per-second-can-my-backend-handle</link>
            <guid isPermaLink="false">exercise-how-many-requests-per-second-can-my-backend-handle</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[취준생이 대규모 트래픽 처리 경험을 쌓는 방법 ?!]]></title>
            <description><![CDATA[✅ 최근 백엔드 개발자 채용 공고에 자주 등장하는 ‘대용량 트래픽 처리 경험’ 백엔드 개발자 채용 공고를 살펴보면 ‘대용량 트래픽 처리 경험’에 관한 얘기가 자주 나온다. 이 역량이 서비스가 점점 고도화 될 수록 빼놓을 수 없는 역량이기 때문이다. 그]]></description>
            <link>https://www.jscode.kr/blog/how-jobseekers-can-practice-large-traffic-handling</link>
            <guid isPermaLink="false">how-jobseekers-can-practice-large-traffic-handling</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2에 백엔드 서버(Spring Boot) 셋팅하기 ]]></title>
            <description><![CDATA[✅ EC2에 Spring Boot 프로젝트 셋팅하기 JDK 설치하기 잘 설치됐는 지 확인하기 Spring Boot 프로젝트 클론 받기 RDS 정보 입력하기 코드 살펴보기 ✅ Spring Boot 서버 실행시키기 Spring Boot 서버 빌드 및 실행]]></description>
            <link>https://www.jscode.kr/blog/exercise-setup-backend-on-ec2</link>
            <guid isPermaLink="false">exercise-setup-backend-on-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 부하 테스트를 통해 병목 지점 진단하기 ]]></title>
            <description><![CDATA[✅ 부하 테스트 시작하기 기존 k6 스크립트 다시 확인하기 부하 테스트 시작하기 k6의 웹 대시보드 열기 CloudWatch 대시보드 열기 ✅ 모니터링 지표를 보고 병목 지점 진단하기 지표를 살펴보면 나머지 리소스들은 괜찮은데 RDS의 CPU 사용률이]]></description>
            <link>https://www.jscode.kr/blog/exercise-diagnose-bottleneck-through-load-test</link>
            <guid isPermaLink="false">exercise-diagnose-bottleneck-through-load-test</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 병목 지점(DB) 해결하기 ]]></title>
            <description><![CDATA[Untitled ✅ 인덱스를 활용해 RDS 성능 개선 성능 개선 방향성 판단하기 인덱스 생성하기 부하 테스트 시작하기 k6의 웹 대시보드 확인하기 ✅ 추가적인 성능 개선 원래 설정해둔 목표 Throuhgput이 4 TPS보다 더 높았다고 가정하자. 그]]></description>
            <link>https://www.jscode.kr/blog/exercise-fix-db-bottleneck</link>
            <guid isPermaLink="false">exercise-fix-db-bottleneck</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CPU, 메모리(Memory), 디스크(Disk) ]]></title>
            <description><![CDATA[✅ CPU, 메모리(Memory), 디스크(Disk) 의미 [CPU] 명령어(코드)를 해석하고 실행 연산 작업 [메모리(Memory)] CPU가 작업하기 위해 임시로 사용하는 공간 실행할 프로그램의 코드, 변수(전역 변수, 매개 변수…) RAM이라 부]]></description>
            <link>https://www.jscode.kr/blog/cpu-memory-disk</link>
            <guid isPermaLink="false">cpu-memory-disk</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:41:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2에서 쿠버네티스를 활용했을 때 발생하는 AWS 예상 비용 ]]></title>
            <description><![CDATA[✅ EC2 EC2 인스턴스 (t4g.small) : 시간당 USD 0.0208 (24시간당 약 700원) 데이터 전송 비용 : 1 GB당 0.1368 USD (1GB당 약 200원) Public IPv4 비용 : 시간당 0.005 USD (24시간당 ]]></description>
            <link>https://www.jscode.kr/blog/aws-cost-when-using-kubernetes-on-ec2</link>
            <guid isPermaLink="false">aws-cost-when-using-kubernetes-on-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2에 배포된 백엔드(Spring Boot) 서버 업데이트하기 ]]></title>
            <description><![CDATA[✅ EC2에 배포된 백엔드(Spring Boot) 서버 업데이트하기 로컬 환경에서 Spring Boot 코드 수정하기 빌드해서 ECR로 이미지 업로드하기 EC2에 있는 매니페스트 파일 수정하기 수정된 매니페스트 파일을 기반으로 업데이트하기 업데이트 됐]]></description>
            <link>https://www.jscode.kr/blog/update-spring-boot-on-ec2-kubernetes</link>
            <guid isPermaLink="false">update-spring-boot-on-ec2-kubernetes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 디플로이먼트(Deployment)를 활용해 MySQL 실행시키기 ]]></title>
            <description><![CDATA[✅ 디플로이먼트(Deployment) 활용해 MySQL 실행시키기 매니페스트 파일 생성하기 매니페스트 기반으로 오브젝트 생성하기 DB 접속해보기 새로운 데이터베이스 생성하기 ✅ MySQL 재시작시키기 여기서 MySQL가 이유 모를 장애로 서비스가 중단]]></description>
            <link>https://www.jscode.kr/blog/example-run-mysql-with-deployment</link>
            <guid isPermaLink="false">example-run-mysql-with-deployment</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RDS, ECR 생성하기 ]]></title>
            <description><![CDATA[✅ RDS 생성하기 RDS 생성하기 잘 접속되는 지 확인하기 ✅ ECR 생성하기]]></description>
            <link>https://www.jscode.kr/blog/create-rds-and-ecr</link>
            <guid isPermaLink="false">create-rds-and-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[남들보다 훨씬 쿠버네티스를 빠르게 배우는 방법?! ]]></title>
            <description><![CDATA[✅ 쿠버네티스에 빠르게 익숙해지려면?! 프로그래밍에서 어떤 기술을 빠르게 익히려면 많이 써봐야 한다. 불변의 법칙이다. 어떤 기술이든 한 번만에 잘 쓰는 방법 따위는 없다. 이렇게도 써보고, 저렇게도 써보고, 장애도 내보고, 응용도 해봐야만 그 기술이]]></description>
            <link>https://www.jscode.kr/blog/how-to-learn-kubernetes-fast</link>
            <guid isPermaLink="false">how-to-learn-kubernetes-fast</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[만약 MySQL과 연결이 제대로 되지 않았다면 어떻게 될까? ]]></title>
            <description><![CDATA[✅ 만약 MySQL과 연결이 제대로 되지 않았다면 어떻게 될까? 매니페스트 파일 수정하기 디플로이먼트 적용 및 재시작 잘 작동하는 지 확인 다시 DB 정보를 올바르게 바꾸고 실행시키기]]></description>
            <link>https://www.jscode.kr/blog/what-if-mysql-connection-fails</link>
            <guid isPermaLink="false">what-if-mysql-connection-fails</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2에서 도커/쿠버네티스 설치하기 (k3s) ]]></title>
            <description><![CDATA[✅ 설치 추천 사양 k3s의 권장 설치 사양이 CPU 2 core, RAM 1 GB이다. 백엔드 서버도 같이 실행시킬 것을 고려해 AWS EC2 인스턴스는 t4g.small로 생성하자. ✅ EC2 인스턴스 생성하기 ✅ Docker 설치하기 설치하기 잘]]></description>
            <link>https://www.jscode.kr/blog/install-docker-kubernetes-on-ec2-k3s</link>
            <guid isPermaLink="false">install-docker-kubernetes-on-ec2-k3s</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EKS 클러스터 생성하기]]></title>
            <description><![CDATA[✅ EKS 클러스터 생성하기 EKS 서비스로 들어가기 클러스터 추가하기 클러스터 구성 셋팅하기 EKS 클러스터의 IAM 역할 생성하기 방금 생성한 역할 선택해 지정하기 나머지 옵션은 그대로 두고 다음 버튼 누르기 다음 단계에서도 기본 옵션 그대로 두고]]></description>
            <link>https://www.jscode.kr/blog/create-eks-cluster-2025-feb</link>
            <guid isPermaLink="false">create-eks-cluster-2025-feb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로컬에서 EKS 클러스터 조정할 수 있게 셋팅하기 ]]></title>
            <description><![CDATA[✅ 로컬에서 EKS 클러스터 조정할 수 있게 셋팅하기 현재 kubectl이 어떤 클러스터 환경에서 작동되고 있는 지 확인하기 kubectl에 EKS 클러스터 추가하기 잘 적용됐는 지 확인하기]]></description>
            <link>https://www.jscode.kr/blog/setup-local-to-control-eks-cluster</link>
            <guid isPermaLink="false">setup-local-to-control-eks-cluster</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EKS 워커 노드 추가하기]]></title>
            <description><![CDATA[✅ EKS 워커 노드 추가하기 노드 그룹 추가하기 노드 그룹 구성 셋팅하기 EKS 노드 그룹의 IAM Role 생성하기 방금 생성한 Role 선택해 지정하기 컴퓨팅 및 조정 구성 설정하기 나머지 옵션은 그대로 두기 노드 그룹이 생성될 때까지 기다리기 ]]></description>
            <link>https://www.jscode.kr/blog/add-eks-worker-node-2025-feb</link>
            <guid isPermaLink="false">add-eks-worker-node-2025-feb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[백엔드(Spring Boot) 서버 빌드한 후 ECR로 Push하기 ]]></title>
            <description><![CDATA[✅ 백엔드(Spring Boot) 서버 빌드한 후 ECR로 Push하기 로컬 환경에 AWS CLI 설치하기 Access Key 발급받기 AWS CLI로 액세스 키 등록하기 ECR로 들어가서 생성한 레포지토리로 들어가기 푸시 명령 확인하기 로컬 환경에서]]></description>
            <link>https://www.jscode.kr/blog/build-and-push-spring-boot-to-ecr</link>
            <guid isPermaLink="false">build-and-push-spring-boot-to-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EKS란? ]]></title>
            <description><![CDATA[✅ EKS(Elastic Kubernetes Service)란? EKS란 AWS에서 쿠버네티스를 편하게 관리하고 사용할 수 있게 만든 AWS용 쿠버네티스이다. 이와 비슷한 예로 MySQL과 같은 DB를 편하게 관리하고 사용할 수 있게 만든 서비스가 R]]></description>
            <link>https://www.jscode.kr/blog/what-is-eks</link>
            <guid isPermaLink="false">what-is-eks</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS EKS를 남들보다 빠르게 익히려면?! ]]></title>
            <description><![CDATA[✅ AWS EKS를 남들보다 빠르게 익히려면?! 지금까지의 쿠버네티스 핵심 개념은 다 배웠다. AWS EKS라고 크게 다를 건 없다. 겁먹을 필요 없다. AWS EKS는 단순히 셋팅법만 익히면 나머지는 다 똑같다. EKS를 셋팅하면서 모든 옵션을 다 ]]></description>
            <link>https://www.jscode.kr/blog/how-to-learn-eks-fast</link>
            <guid isPermaLink="false">how-to-learn-eks-fast</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 디플로이먼트, 서비스를 활용해 웹 서버(Nginx) 띄워보기 ]]></title>
            <description><![CDATA[✅ 디플로이먼트, 서비스를 활용해 웹 서버(Nginx) 띄워보기 매니페스트 파일 작성하기 매니페스트 파일 실행시키기 오브젝트가 작 생성됐는 지 확인 정상적으로 잘 접속되는 지 확인하기 ✅ 생성한 오브젝트 정리하기 $ kubectl delete all ]]></description>
            <link>https://www.jscode.kr/blog/example-run-nginx-with-deployment-and-service-on-ec2</link>
            <guid isPermaLink="false">example-run-nginx-with-deployment-and-service-on-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[k3s란? ]]></title>
            <description><![CDATA[✅ EC2에서 쿠버네티스(k8s)를 쓰는 게 학습에 도움이 안 되는 이유 쿠버네티스의 학습을 가로막는 요소에는 크게 2가지가 있다. 복잡한 설치 과정 EC2 인스턴스를 3대 만들어야 한다는 비용적인 부담 위 2가지 문제점을 해결할 수 있는 방법이 있다]]></description>
            <link>https://www.jscode.kr/blog/what-is-k3s</link>
            <guid isPermaLink="false">what-is-k3s</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[백엔드(Spring Boot) 서버 프로젝트, 매니페스트 파일 구성하기 ]]></title>
            <description><![CDATA[✅ 새로운 아키텍처에 맞게 코드 수정하기 Spring Boot 프로젝트 클론 받기 쿠버네티스 매니페스트 파일 클론 받기 코드 살펴보기]]></description>
            <link>https://www.jscode.kr/blog/spring-boot-project-and-manifest-for-k8s</link>
            <guid isPermaLink="false">spring-boot-project-and-manifest-for-k8s</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[비용 나가지 않게 EC2, RDS, ECR, EKS 종료하기 ]]></title>
            <description><![CDATA[✅ 비용 나가지 않게 EKS 종료하기 실행 중인 오브젝트 종료하기 EKS 노드 그룹 삭제하기 EKS 클러스터 삭제하기 ✅ 비용 나가지 않게 EC2 종료하기 ✅ 비용 나가지 않게 RDS 종료하기 최종 스냅샷 생성과 자동 백업 보존을 체크하면 비용이 나간]]></description>
            <link>https://www.jscode.kr/blog/shutdown-ec2-rds-ecr-eks-to-save-cost</link>
            <guid isPermaLink="false">shutdown-ec2-rds-ecr-eks-to-save-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 백엔드(Spring Boot) 서버와 MySQL 연동하기 ]]></title>
            <description><![CDATA[✅ 백엔드(Spring Boot) 서버와 MySQL 연동하기 Spring Boot 프로젝트 셋팅 간단한 코드 작성 application.yml에 DB 연결을 위한 정보 작성하기 불필요한 테스트 코드 삭제 Dockerfile 작성하기 Spring Boo]]></description>
            <link>https://www.jscode.kr/blog/example-connect-spring-boot-with-mysql</link>
            <guid isPermaLink="false">example-connect-spring-boot-with-mysql</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[보안을 위해 외부에서 MySQL 접근하지 못하도록 막기 ]]></title>
            <description><![CDATA[✅ 기존 구성의 보안적인 문제점 지금까지 만든 구조를 살펴보면 위와 같다. 위의 구조에서 MySQL을 중점적으로 살펴보면 보안에 취약한 점이 있다. 30002번 포트로 MySQL에 직접적으로 접근할 수 있게끔 보안이 설정되어 있다는 점이다. Servi]]></description>
            <link>https://www.jscode.kr/blog/block-external-access-to-mysql</link>
            <guid isPermaLink="false">block-external-access-to-mysql</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EKS에 백엔드(Spring Boot) 서버 배포하기 (+ RDS, ECR) ]]></title>
            <description><![CDATA[✅ EKS에 백엔드(Spring Boot) 서버 배포하기 (+ RDS, ECR) 매니페스트 파일 수정하기 매니페스트 파일을 통해 오브젝트 생성하기 잘 생성됐는 지 확인하기 Service의 주소로 접속해보기 정말 로드밸런서가 생성됐는 지 확인하기 ✅ 아]]></description>
            <link>https://www.jscode.kr/blog/deploy-spring-boot-to-eks-with-rds-ecr</link>
            <guid isPermaLink="false">deploy-spring-boot-to-eks-with-rds-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[볼륨(Volume)이란? ]]></title>
            <description><![CDATA[✅ 파드(Pod)가 가진 문제점 쿠버네티스를 활용하면 특정 프로그램을 파드로 띄울 수 있다. 이 프로그램에 기능이 추가되면 쿠버네티스는 기존 파드에서 변경된 부분을 수정하지 않고, 새로운 파드를 만들어서 통째로 갈아끼우는 방식으로 교체를 한다. 이게 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-volume</link>
            <guid isPermaLink="false">what-is-volume</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2에서 쿠버네티스로 백엔드(Spring Boot) 서버 띄우기 ]]></title>
            <description><![CDATA[✅ EC2에서 쿠버네티스로 백엔드(Spring Boot) 서버 띄우기 매니페스트 파일 클론 받기 Deployment, ConfigMap, Secret 파일 수정하기 매니페스트 파일을 통해 오브젝트 생성하기 잘 생성됐는 지 확인 API가 잘 작동하는 지]]></description>
            <link>https://www.jscode.kr/blog/run-spring-boot-on-ec2-kubernetes</link>
            <guid isPermaLink="false">run-spring-boot-on-ec2-kubernetes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[컨피그맵(ConfigMap), 시크릿(Secret)을 활용해 환경변수 분리하기 ]]></title>
            <description><![CDATA[ConfigMap 매니페스트 파일 생성하기 Secret 매니페스트 파일 만들기 매니페스트 파일 반영하기 잘 반영됐는 지 확인하기]]></description>
            <link>https://www.jscode.kr/blog/configmap-secret-separate-env-again</link>
            <guid isPermaLink="false">configmap-secret-separate-env-again</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EKS에서 쿠버네티스를 활용했을 때 발생하는 AWS 예상 비용 ]]></title>
            <description><![CDATA[✅ EC2 아래의 구성으로 EC2 인스턴스를 2대 사용할 예정 EC2 인스턴스 (t4g.small) : 시간당 0.0208 USD (24시간당 약 700원) 데이터 전송 비용 : 1 GB당 0.1368 USD (1GB당 약 200원) ✅ RDS RDS]]></description>
            <link>https://www.jscode.kr/blog/aws-cost-when-using-eks</link>
            <guid isPermaLink="false">aws-cost-when-using-eks</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[볼륨(Volume)을 활용해 MySQL 실행시키기 ]]></title>
            <description><![CDATA[✅ 볼륨(Volume)을 활용해 MySQL 실행시키기 데이터베이스를 확인해보면 이전에 만들었던 new-db라는 데이터베이스가 없어졌다. 실제 데이터베이스에서는 데이터가 없어져서는 안 된다. 데이터가 보존되도록 볼륨(Volume)을 설정해보자. 퍼시스턴]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-with-volume</link>
            <guid isPermaLink="false">run-mysql-with-volume</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 백엔드(Spring Boot) 서버 배포하기, DB 연동하기 (+ RDS, ECR) ]]></title>
            <description><![CDATA[EC2에 k3s를 활용해 백엔드(Spring Boot) 서버를 배포하고, 백엔드 서버에 DB(MySQL)도 연동시켜보자. ✅ 로컬 환경에서의 아키텍처 ✅ 배포 환경에서의 아키텍처 로컬 환경에서의 아키텍처와의 차이점은 크게 2가지이다. 로컬에 도커 이미]]></description>
            <link>https://www.jscode.kr/blog/example-deploy-spring-boot-with-db-on-ec2-rds-ecr</link>
            <guid isPermaLink="false">example-deploy-spring-boot-with-db-on-ec2-rds-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2가 ECR로부터 이미지를 Pull 받아올 수 있게 권한 부여하기 ]]></title>
            <description><![CDATA[✅ EC2가 ECR로부터 이미지를 Pull 받아올 수 있게 권한 부여하기 AWS CLI 설치하기 IAM 사용자 만들기 Access Key 발급받기 AWS CLI로 액세스 키 등록하기 5. ECR에 접근할 수 있는 권한 인증하기 쿠버네티스가 ECR로부터]]></description>
            <link>https://www.jscode.kr/blog/grant-ec2-permission-to-pull-from-ecr</link>
            <guid isPermaLink="false">grant-ec2-permission-to-pull-from-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[쿠버네티스와 EKS의 아키텍처 구조 ]]></title>
            <description><![CDATA[✅ 쿠버네티스의 복잡한 아키텍처 구조 쿠버네티스를 입문하는 입장에서 위와 같은 복잡한 아키텍처 구조를 전부 이해할 필요는 없다. 그런데 대부분의 책과 강의의 초반부를 보면 일일이 다 설명하고 있다. etcd가 뭔지, Control Plane은 뭔지, ]]></description>
            <link>https://www.jscode.kr/blog/kubernetes-vs-eks-architecture</link>
            <guid isPermaLink="false">kubernetes-vs-eks-architecture</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[서버가 죽었을 때 자동으로 복구하는 기능 (Self-Healing) ]]></title>
            <description><![CDATA[✅ 실행되고 있는 파드 내 서버가 비정상적으로 종료된다면? 특정 파드의 컨테이너 종료시키기 파드 조회하기 ✅ 요약 쿠버네티스는 파드 내의 컨테이너가 종료되면 자동으로 컨테이너를 재시작시킨다. 이 기능을 보고 쿠버네티스에서는 셀프 힐링(Self-Heal]]></description>
            <link>https://www.jscode.kr/blog/self-healing-feature</link>
            <guid isPermaLink="false">self-healing-feature</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 백엔드(Nest.js) 서버를 파드(Pod)로 띄워보기 ]]></title>
            <description><![CDATA[✅ 백엔드(Nest.js) 서버를 파드(Pod)로 띄워보기 Nest.js 프로젝트 만들기 프로젝트 실행시켜보기 Dockerfile 작성하기 .dockerignore 작성하기 Dockerfile을 바탕으로 이미지 빌드하기 이미지가 잘 생성됐는 지 확인하]]></description>
            <link>https://www.jscode.kr/blog/example-run-nestjs-as-pod</link>
            <guid isPermaLink="false">example-run-nestjs-as-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[새로운 버전의 서버로 업데이트 시키기 ]]></title>
            <description><![CDATA[실제 서버를 운영하다보면 기능을 업데이트를 할 일이 많이 발생한다. 그럼 쿠버네티스에서는 새로운 버전의 백엔드 서버로 어떻게 업데이트 시키는 지 알아보자. ✅ 새로운 버전의 서버로 업데이트 시키기 코드 수정하기 Spring Boot 프로젝트 다시 빌드]]></description>
            <link>https://www.jscode.kr/blog/how-to-update-to-new-server-version</link>
            <guid isPermaLink="false">how-to-update-to-new-server-version</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[디플로이먼트(Deployment)란? ]]></title>
            <description><![CDATA[✅ 디플로이먼트(Deployment)란? [First Word 법칙] 
디플로이먼트(Deployment) : 파드를 묶음으로 쉽게 관리할 수 있는 기능 현업에서는 일반적으로 서버를 작동시킬 때 파드(Pod)를 수동으로 배포하진 않는다. 디플로이먼트(D]]></description>
            <link>https://www.jscode.kr/blog/what-is-deployment-in-kubernetes</link>
            <guid isPermaLink="false">what-is-deployment-in-kubernetes</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[파드(Pod)란? ]]></title>
            <description><![CDATA[✅ 파드(Pod)란? 도커에서는 하나의 프로그램을 실행시키는 단위를 컨테이너라고 주로 불렀다. 쿠버네티스에서는 하나의 프로그램을 실행시키는 단위를 파드(Pod)라고 부른다. 따라서 파드(Pod)는 일반적으로 쿠버네티스에서 하나의 프로그램을 실행시키는 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-a-pod</link>
            <guid isPermaLink="false">what-is-a-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[요약] 지금까지 나온 명령어 정리 ]]></title>
            <description><![CDATA[파드(Pod) 관련 명령어 ✅ 파드 조회 $ kubectl get pods ✅ 파드 내부로 접속 # kubectl exec -it [파드명] -- bash
$ kubectl exec -it nginx-pod -- bash ✅ 파드 포트 포워딩 # ku]]></description>
            <link>https://www.jscode.kr/blog/summary-kubernetes-commands-2</link>
            <guid isPermaLink="false">summary-kubernetes-commands-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[요약] 파드(Pod), 디플로이먼트(Deployment), 서비스(Service) 개념 정리 ]]></title>
            <description><![CDATA[✅ 쿠버네티스에서의 핵심 개념 파드(Pod) : 일반적으로 쿠버네티스에서 하나의 프로그램을 실행시키는 단위 (쿠버네티스에서 가장 작은 단위) 디플로이먼트(Deployment) : 파드를 묶음으로 쉽게 관리할 수 있는 기능 서비스(Service) : 외]]></description>
            <link>https://www.jscode.kr/blog/summary-pod-deployment-service</link>
            <guid isPermaLink="false">summary-pod-deployment-service</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[시크릿(Secret)을 활용해 ‘민감한 값’을 환경 변수로 분리하기 ]]></title>
            <description><![CDATA[✅ 시크릿(Secret)이란? 시크릿(Secret)은 컨피그맵(ConfigMap)과 비슷하게 환경 변수를 분리해서 관리하는 오브젝트이다. 차이점은 시크릿(Secret)은 비밀번호와 같이 보안적으로 중요한 값을 관리하기 위한 오브젝트이다. ✅ 시크릿(S]]></description>
            <link>https://www.jscode.kr/blog/use-secret-to-store-sensitive-env</link>
            <guid isPermaLink="false">use-secret-to-store-sensitive-env</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[요약] 지금까지 나온 명령어 정리 ]]></title>
            <description><![CDATA[✅ 파드 조회 $ kubectl get pods ✅ 파드 포트 포워딩 # kubectl port-forward pod/[파드명] [로컬에서의 포트]/[파드에서의 포트]
$ kubectl port-forward pod/nginx-pod 80:80 ✅ 파]]></description>
            <link>https://www.jscode.kr/blog/summary-kubernetes-commands-1</link>
            <guid isPermaLink="false">summary-kubernetes-commands-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 서비스(Service)를 활용해 백엔드(Spring Boot) 서버와 통신해보기 ]]></title>
            <description><![CDATA[✅ 서비스(Service)를 활용해 백엔드(Spring Boot)와 통신해보기 이전 강의에서 디플로이먼트를 활용해 백엔드 서버(Spring Boot) 3개를 띄웠었다. 하지만 디플로이먼트에 포함되어 있는 모든 파드에 골고루 요청을 분배하기 위해 서비스]]></description>
            <link>https://www.jscode.kr/blog/example-communicate-with-spring-boot-using-service</link>
            <guid isPermaLink="false">example-communicate-with-spring-boot-using-service</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[쿠버네티스(Kubernetes)란? / 장점 ]]></title>
            <description><![CDATA[✅ 쿠버네티스(Kubernetes)란? 쿠버네티스(Kubernetes)는 다수의 컨테이너를 효율적으로 배포, 확장 및 관리하기 위한 오픈 소스 시스템이다. 쿠버네티스(Kubernetes)는 Docker Compose와 비슷한 느낌을 가지고 있다. Do]]></description>
            <link>https://www.jscode.kr/blog/kubernetes-intro-and-benefits</link>
            <guid isPermaLink="false">kubernetes-intro-and-benefits</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[이미지가 없다고 에러가 뜨는 이유 (이미지 풀 정책) ]]></title>
            <description><![CDATA[✅ 이미지가 없다고 에러가 뜨는 이유 이전에 Spring Boot 프로젝트를 이미지로 빌드해서 파드로 띄웠다. 하지만 ImagePullBackOff라는 에러가 발생했다. 이 문제는 이미지 풀 정책(Image Pull Policy) 때문에 발생한 것이다]]></description>
            <link>https://www.jscode.kr/blog/image-pull-policy-error-explanation</link>
            <guid isPermaLink="false">image-pull-policy-error-explanation</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 백엔드(Spring Boot) 서버를 파드(Pod)로 띄워보기]]></title>
            <description><![CDATA[✅ 백엔드(Spring Boot) 서버를 파드(Pod)로 띄워보기 Spring Boot 프로젝트 셋팅 간단한 코드 작성 프로젝트 실행시켜보기 Dockerfile 작성하기 Spring Boot 프로젝트 빌드하기 Dockerfile을 바탕으로 이미지 빌드]]></description>
            <link>https://www.jscode.kr/blog/example-run-spring-boot-as-pod</link>
            <guid isPermaLink="false">example-run-spring-boot-as-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 프론트엔드(Next.js) 서버를 파드(Pod)로 띄워보기 ]]></title>
            <description><![CDATA[✅ 프론트엔드(Next.js) 서버를 파드(Pod)로 띄워보기 Next.js 프로젝트 만들기 프로젝트 실행시켜보기 Dockerfile 작성하기 .dockerignore 작성하기 Dockerfile을 바탕으로 이미지 빌드하기 이미지가 잘 생성됐는 지 확]]></description>
            <link>https://www.jscode.kr/blog/example-run-frontend-nextjs-as-pod</link>
            <guid isPermaLink="false">example-run-frontend-nextjs-as-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[컨피그맵(ConfigMap)을 활용해 환경변수 분리하기 ]]></title>
            <description><![CDATA[✅ 컨피그맵(ConfigMap)이란? Spring Boot에서는 설정값을 application.yml으로 분리해서 관리한다. Nest.js에서도 설정값을 .env으로 분리해서 관리한다. 별도의 파일로 분리를 해서 관리함으로써 유지보수가 편리해지고 개발]]></description>
            <link>https://www.jscode.kr/blog/use-configmap-to-separate-env</link>
            <guid isPermaLink="false">use-configmap-to-separate-env</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 파드(Pod) 디버깅 하는 방법 ]]></title>
            <description><![CDATA[개발을 하다보면 에러를 디버깅하고 해결하는 데에만 대부분의 시간을 쓴다. 따라서 어떤 기술을 익힐 때 반드시 에러를 디버깅 할 수 있는 방법을 정리해두어야 한다. ✅ 파드(Pod)가 정상적으로 실행되지 않았을 때 매니페스트 파일 생성하기 파드 생성하기]]></description>
            <link>https://www.jscode.kr/blog/how-to-debug-pods</link>
            <guid isPermaLink="false">how-to-debug-pods</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[파드(Pod)로 띄운 프로그램에 접속이 안 되는 이유 ]]></title>
            <description><![CDATA[✅ 파드(Pod)로 띄운 프로그램에 접속이 안 되는 이유 도커에 대해서 공부했을 때는 컨테이너 내부와 컨테이너 외부의 네트워크가 서로 독립적으로 분리되어 있다. 하지만 쿠버네티스에서는 파드(Pod) 내부의 네트워크를 컨테이너가 공유해서 같이 사용한다.]]></description>
            <link>https://www.jscode.kr/blog/why-cant-access-program-running-in-pod</link>
            <guid isPermaLink="false">why-cant-access-program-running-in-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[서비스(Service)란? ]]></title>
            <description><![CDATA[✅ 서비스(Service)란? [First Word 법칙] 
서비스(Service) : 외부로부터 요청을 받는 역할 / 외부로부터 들어오는 트래픽을 받아, 파드에 균등하게 분배해주는 로드밸런서 역할을 하는 기능 실제 서비스에서 파드(Pod)에 요청을 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-service</link>
            <guid isPermaLink="false">what-is-service</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[디플로이먼트를 활용한 서버 개수 조절 방법 ]]></title>
            <description><![CDATA[✅ 트래픽이 늘어나서 서버를 5개로 늘리고 싶다면? 디플로이먼트(Deployment)를 활용하면 쉽게 서버의 개수를 늘릴 수 있다. 매니페스트 파일 수정 변경사항 적용 잘 적용됐는 지 확인하기]]></description>
            <link>https://www.jscode.kr/blog/scaling-with-deployment</link>
            <guid isPermaLink="false">scaling-with-deployment</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 백엔드(Spring Boot) 서버 3개 띄워보기 ]]></title>
            <description><![CDATA[✅ 백엔드(Spring Boot) 서버 3개 띄워보기 실제 서비스를 운영하다보면 트래픽이 증가해서 서버가 버벅거리는 경우가 생긴다. 이 때는 서버를 수평적 확장(서버의 개수를 늘리는 방식)을 통해 해결한다. 이런 상황을 가정해 백엔드 서버인 Sprin]]></description>
            <link>https://www.jscode.kr/blog/example-run-3-spring-boot-pods</link>
            <guid isPermaLink="false">example-run-3-spring-boot-pods</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 웹 서버(Nginx)를 파드(Pod)로 띄워보기 ]]></title>
            <description><![CDATA[✅ 웹 서버(Nginx)를 파드(Pod)로 띄워보기 파드(Pod)를 생성할 때 CLI를 활용하는 방법이 있고, yaml 파일을 활용하는 방법이 있다. 실제 현업에서는 yaml 파일을 활용하는 경우가 많다. 따라서 yaml 파일을 활용해서 파드(Pod)]]></description>
            <link>https://www.jscode.kr/blog/example-run-nginx-as-pod</link>
            <guid isPermaLink="false">example-run-nginx-as-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로컬에서의 쿠버네티스 설치 (Docker Desktop) ]]></title>
            <description><![CDATA[✅ 로컬에서의 쿠버네티스 설치 여러 책이나 강의를 살펴보면 쿠버네티스를 설치하는 과정이 굉장히 복잡하며 어렵다. 설치하는 과정만 따라가는데도 포기하고 싶은 마음이 여러 번 드는 게 쿠버네티스이다. 하지만 현업으로 가보면 막상 쿠버네티스를 직접 설치할 ]]></description>
            <link>https://www.jscode.kr/blog/install-kubernetes-locally-docker-desktop</link>
            <guid isPermaLink="false">install-kubernetes-locally-docker-desktop</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 디플로이먼트, 서비스를 활용해 백엔드(Nest.js) 서버 띄워보기 ]]></title>
            <description><![CDATA[✅ 디플로이먼트, 서비스를 활용해 백엔드(Nest.js) 서버 띄워보기 [요구 사항] Nest.js 프로젝트 만들기 프로젝트 실행시켜보기 Dockerfile 작성하기 .dockerignore 작성하기 Dockerfile을 바탕으로 이미지 빌드하기 이미]]></description>
            <link>https://www.jscode.kr/blog/example-run-nestjs-using-deployment-and-service</link>
            <guid isPermaLink="false">example-run-nestjs-using-deployment-and-service</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 프론트엔드(HTML, CSS, Nginx) 서버를 파드(Pod)로 띄워보기 ]]></title>
            <description><![CDATA[✅ 프론트엔드(HTML, CSS, Nginx) 서버를 파드(Pod)로 띄워보기 HTML, CSS 파일 만들기 실행시켜보기 Dockerfile 작성하기 Dockerfile을 바탕으로 이미지 빌드하기 이미지가 잘 생성됐는 지 확인하기 매니페스트 파일 작성]]></description>
            <link>https://www.jscode.kr/blog/example-run-frontend-html-css-nginx-as-pod</link>
            <guid isPermaLink="false">example-run-frontend-html-css-nginx-as-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 디플로이먼트를 활용해 백엔드(Spring Boot) 서버 3개 띄워보기 ]]></title>
            <description><![CDATA[✅ 디플로이먼트를 활용해 백엔드(Spring Boot) 서버 3개 띄워보기 실제 서비스를 운영하다보면 트래픽이 증가해서 서버가 버벅거리는 경우가 생긴다. 이 때는 서버를 수평적 확장(서버의 개수를 늘리는 방식)을 통해 해결한다. 이런 상황을 가정해 백]]></description>
            <link>https://www.jscode.kr/blog/example-run-3-spring-boot-with-deployment</link>
            <guid isPermaLink="false">example-run-3-spring-boot-with-deployment</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[예제] 백엔드(Spring Boot) 서버에 환경변수 등록해 사용하기 ]]></title>
            <description><![CDATA[✅ 백엔드(Spring Boot) 서버에 환경변수 등록해 사용하기 Spring Boot 프로젝트 셋팅 간단한 코드 작성 프로젝트 실행시켜보기 Dockerfile 작성하기 Spring Boot 프로젝트 빌드하기 Dockerfile을 바탕으로 이미지 빌드]]></description>
            <link>https://www.jscode.kr/blog/example-set-env-in-spring-boot-pod</link>
            <guid isPermaLink="false">example-set-env-in-spring-boot-pod</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[설계한 모델을 실제 DB에는 어떻게 반영하나요? ]]></title>
            <description><![CDATA[✅ 설계한 모델을 실제 DB에는 어떻게 반영하나요? 설계한 모델을 실제 DB에 반영할 때는 3가지 방법을 활용한다. SQL문(DDL) 활용하기 DB 관리 툴(MySQL Workbench, DBeaver 등) 활용하기 ORM 활용하기 최근에 ORM을 활]]></description>
            <link>https://www.jscode.kr/blog/apply-model-to-actual-db</link>
            <guid isPermaLink="false">apply-model-to-actual-db</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:34:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[데이터 타입 (Data Type) 실전 활용 지침 ]]></title>
            <description><![CDATA[✅ 데이터 타입 (Data Type) 설계한 내용을 이제 실제 데이터베이스에 반영해야 한다. 데이터베이스에서는 테이블의 컬럼을 생성할 때 데이터 타입을 설정할 수 있다. 데이터 타입을 설정함으로써 일관되게 동일한 데이터 타입만 저장되게끔 제한할 수 있]]></description>
            <link>https://www.jscode.kr/blog/data-type-practical-guidelines</link>
            <guid isPermaLink="false">data-type-practical-guidelines</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:34:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[역정규화는 언제하나요 ? ]]></title>
            <description><![CDATA[✅ 역정규화란? 정규화란 DB를 설계하면서 중복을 없애는 과정이라고 설명했었다. 역정규화란 성능을 향상시키기 위해 정규화된 DB를 다시 중복을 허용하는 형태로 변경하는 과정을 뜻한다. ✅ 역정규화는 언제 하나요 ? 특별한 이유가 없는 한 정규화를 지켜]]></description>
            <link>https://www.jscode.kr/blog/when-to-denormalize</link>
            <guid isPermaLink="false">when-to-denormalize</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:34:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[정규화를 하면 성능이 떨어진다던데요 ?]]></title>
            <description><![CDATA[✅ 정규화를 하면 성능이 떨어진다던데요 ? 특정 회사의 데이터베이스를 까보면 정규화가 안 되어 있는 설계를 종종 만난다. 그래서 DB 설계를 하신 분한테 왜 정규화를 적용시키지 않았냐고 물어보면 대부분 아래와 같이 답변한다. 정규화를 지키면 테이블 개]]></description>
            <link>https://www.jscode.kr/blog/does-normalization-hurt-performance</link>
            <guid isPermaLink="false">does-normalization-hurt-performance</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:34:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 ]]></title>
            <description><![CDATA[✅ 요구 사항 현업에서 아래와 같이 글로만 된 요구 사항만 가지고 DB 설계를 하는 일은 잘 없다. UI(화면) 디자인이 나왔을 때 UI 디자인을 보면서 DB 설계에 들어가는 편이다. 하지만 지금은 연습을 하기 위함이니까 아래 요구사항만 가지고 설계를]]></description>
            <link>https://www.jscode.kr/blog/practice-db-design-jscode-community</link>
            <guid isPermaLink="false">practice-db-design-jscode-community</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 4] 데이터 중복이 발생하는 컬럼이 있는 지 확인해라 ]]></title>
            <description><![CDATA[✅ 데이터 중복이 발생하는 지 시뮬레이션을 돌려봐라. Untitled 위 수업에서 DB 설계의 핵심 원칙은 ‘중복 없애기’라고 했었다. 초안으로 구성된 테이블에서 데이터 중복이 발생하는 구성인지 임의로 데이터를 넣어봐야 한다. 무슨 말인지 아래 예시를]]></description>
            <link>https://www.jscode.kr/blog/rule-4-check-data-duplication</link>
            <guid isPermaLink="false">rule-4-check-data-duplication</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 1 ]]></title>
            <description><![CDATA[✅ 1:1 관계 / 1:N 관계 / N:M 관계 ? 옛날 개발자들이 수많은 DB 설계 케이스를 접하다보니 엔티티 간의 관계에서 패턴을 찾은 것이다. 그게 바로 1:1 관계, 1:N 관계, N:M 관계라는 패턴이다. 이 개념을 알게 되면 DB 설계 할 ]]></description>
            <link>https://www.jscode.kr/blog/rule-3-understand-relationships-1</link>
            <guid isPermaLink="false">rule-3-understand-relationships-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 2] 어떤 테이블에 FK를 넣어도 ‘규칙 1’을 못 지킬 때는 중간 테이블을 하나 더 만들어라 ]]></title>
            <description><![CDATA[✅ 어떤 테이블에 FK를 넣어도 ‘규칙 1’을 못 지킬 때는 중간 테이블을 하나 더 만들어라. 이 규칙도 말로만 들으면 무슨 말인지 이해하기 어렵기 때문에 바로 예시를 보자. 1. students (학생) 위 테이블을 보면 규칙 1(한 칸에는 한 가지]]></description>
            <link>https://www.jscode.kr/blog/rule-2-add-middle-table-when-fk-breaks-rule-1</link>
            <guid isPermaLink="false">rule-2-add-middle-table-when-fk-breaks-rule-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[데이터베이스 네이밍 규칙 ]]></title>
            <description><![CDATA[현업에서 많이 사용하는 데이터베이스 네이밍 규칙을 배워보자. 아래 규칙을 엄격하게 지켜야 하는 건 아니지만, 현업 개발자들이 자주 적용시키는 일반적인 규칙을 배워서 먼저 적용시켜볼 것이다. ✅ 테이블명, 컬럼명을 소문자로 작성한다. 테이블명, 컬럼명을]]></description>
            <link>https://www.jscode.kr/blog/database-naming-conventions</link>
            <guid isPermaLink="false">database-naming-conventions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[저장할 데이터 파악하기 / ]]></title>
            <description><![CDATA[✅ 요구 사항 현업에서 아래와 같이 글로만 된 요구 사항만 가지고 DB 설계를 하는 일은 잘 없다. UI(화면) 디자인이 나왔을 때 UI 디자인을 보면서 DB 설계에 들어가는 편이다. 하지만 지금은 연습을 하기 위함이니까 아래 요구사항만 가지고 설계를]]></description>
            <link>https://www.jscode.kr/blog/identify-and-group-data</link>
            <guid isPermaLink="false">identify-and-group-data</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 화면 UI 디자인을 보고 DB 설계해보기 - JSCODE 게시판 ]]></title>
            <description><![CDATA[이제 현업과 최대한 비슷한 상황처럼 완성된 UI 디자인을 보고 DB 설계를 할 예정이다. 그리고 실제 현업 개발자들이 어떤 방식으로 어떤 생각을 하면서 DB 설계를 하는 지 차근차근 보여줄 예정이다. 이 실습을 통해서 DB 설계를 어떻게 해야 하는 지]]></description>
            <link>https://www.jscode.kr/blog/practice-db-design-from-ui-jscode-board</link>
            <guid isPermaLink="false">practice-db-design-from-ui-jscode-board</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 5 ]]></title>
            <description><![CDATA[✅ N:M 관계의 특징 중간 테이블이 있어야 한다. 중간 테이블에 두 테이블의 FK가 들어가야 한다. N:M 관계에서 중간 테이블을 추가해 1:N 관계로 바꿔 표현하게 된다. 예시 1) [Before] students (학생) [After] stude]]></description>
            <link>https://www.jscode.kr/blog/rule-3-understand-relationships-5</link>
            <guid isPermaLink="false">rule-3-understand-relationships-5</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 1] 한 칸에는 한 가지 정보만 들어가도록 만들어라 - 2 ]]></title>
            <description><![CDATA[✅ 심화) ‘한 가지 정보’라는 게 관점에 따라 달라질 수 있다. users (사용자) users (사용자) 누군가는 박재성이라는 전체 이름이 하나의 정보라고 생각할 수 있지만, 누군가는 박이 하나의 정보고, 재성이 하나의 정보라고 판단할 수도 있다.]]></description>
            <link>https://www.jscode.kr/blog/rule-1-one-piece-of-information-per-cell-2</link>
            <guid isPermaLink="false">rule-1-one-piece-of-information-per-cell-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DB 설계 전체 과정 ]]></title>
            <description><![CDATA[✅ DB 설계 전체 과정 많은 책들에서는 데이터베이스 모델링 방법이 아주 복잡하게 설명되어 있고, 정규화의 개념 조차 이해하기가 너무 어렵다. 쉽게 데이터베이스 모델링 하는 방법을 알려줄 것이다. 이 방식대로 모델링을 하다보면 자연스럽게 정규화 과정을]]></description>
            <link>https://www.jscode.kr/blog/db-design-full-process</link>
            <guid isPermaLink="false">db-design-full-process</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 6] 숨어있는 중복을 찾아라 ]]></title>
            <description><![CDATA[✅ 숨어있는 중복을 찾아라. 숨어있는 중복이 무슨 뜻인지 설명하기 위해 예시를 바로 보자. posts (게시글) users (사용자) likes (좋아요) 위 테이블의 구성에서는 임의의 데이터를 넣어봐도 중복 데이터가 발생하는 컬럼이 있진 않다. 하지]]></description>
            <link>https://www.jscode.kr/blog/rule-6-find-hidden-duplication</link>
            <guid isPermaLink="false">rule-6-find-hidden-duplication</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 요구사항을 보고 DB 설계해보기 - JSCODE 쇼핑몰 ]]></title>
            <description><![CDATA[✅ 요구 사항 현업에서 아래와 같이 글로만 된 요구 사항만 가지고 DB 설계를 하는 일은 잘 없다. UI(화면) 디자인이 나왔을 때 UI 디자인을 보면서 DB 설계에 들어가는 편이다. 하지만 지금은 연습을 하기 위함이니까 아래 요구사항만 가지고 설계를]]></description>
            <link>https://www.jscode.kr/blog/practice-db-design-jscode-shoppingmall</link>
            <guid isPermaLink="false">practice-db-design-jscode-shoppingmall</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DB 설계 시 꼭 기억해야 할 핵심 원칙 1가지 ]]></title>
            <description><![CDATA[✅ DB 설계의 핵심은 ‘중복 없애기’이다. 데이터베이스를 설계할 때 딱 1가지만 기억하면 된다. 중복 없애기 이게 무슨 말인지 아래 예시로 알아보자. users (사용자) posts(게시글) 위의 표와 같이 게시글 데이터가 DB에 많이 쌓여있다고 가]]></description>
            <link>https://www.jscode.kr/blog/one-core-principle-of-db-design</link>
            <guid isPermaLink="false">one-core-principle-of-db-design</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 2 ]]></title>
            <description><![CDATA[✅ 예시 1 사용자 (users), 이메일 (emails) (한 명의 사용자가 회원가입 할 때 여러 개의 이메일을 입력할 수 있는 서비스라고 가정하자.) 사용자가 이메일을 소유한다. 이메일은 사용자에 의해 소유된다. 한 명의 사용자는 여러 개의 이메일]]></description>
            <link>https://www.jscode.kr/blog/rule-3-understand-relationships-2</link>
            <guid isPermaLink="false">rule-3-understand-relationships-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 1] 한 칸에는 한 가지 정보만 들어가도록 만들어라 - 1]]></title>
            <description><![CDATA[✅ 한 칸에는 한 가지 정보만 들어가도록 만들어라. 데이터베이스 테이블을 설계할 때 ‘한 칸에는 한 가지 정보만 들어가야 한다.’라는 규칙을 지켜야 한다. 이 규칙이 뭔지 알아보기 위해 이 규칙을 안 지킨 사례 먼저 살펴보자. [사례 1] users ]]></description>
            <link>https://www.jscode.kr/blog/rule-1-one-piece-of-information-per-cell-1</link>
            <guid isPermaLink="false">rule-1-one-piece-of-information-per-cell-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] ERD란 ? / ERD 해석하기 ]]></title>
            <description><![CDATA[DB 설계를 엑셀(Excel)을 활용해서 진행했었다. 사실 DB 설계를 할 때는 어떤 툴을 쓰던 상관없다. 테이블과 컬럼을 나타낼 수 있는 툴은 어떤 것이든 상관없다. 실제 DB 설계 결과물을 구글링 해보면 아래와 같은 형태의 그림을 많이 볼 수 있다]]></description>
            <link>https://www.jscode.kr/blog/extra-erd-and-how-to-read</link>
            <guid isPermaLink="false">extra-erd-and-how-to-read</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DB 설계할 때 이런 개념들 몰라도 아무 문제 없습니다! ]]></title>
            <description><![CDATA[기본키, 후보키, 대체키, 슈퍼키 개체-관계 모델 모델링 과정 (개념적 모델링, 논리적 모델링, 물리적 모델링) 이상현상 (삭제이상, 삽입이상, 수정이상) 함수 종속성 제1정규형 ~ 제5정규형, BCNF 정규형 / 부분적 함수 종속, 이행적 함수 종속]]></description>
            <link>https://www.jscode.kr/blog/db-design-things-you-dont-need-to-know</link>
            <guid isPermaLink="false">db-design-things-you-dont-need-to-know</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 화면 UI 디자인을 보고 DB 설계해보기 - JSCODE 투두리스트 ]]></title>
            <description><![CDATA[https://www.figma.com/design/aGIy3bSQGheTsNOyXWWh3y/%5B%EC%9D%B8%ED%94%84%EB%9F%B0-DB-%EC%84%A4%EA%B3%84-%EA%B0%95%EC%9D%98%5D-JSCODE-%ED%88]]></description>
            <link>https://www.jscode.kr/blog/practice-db-design-from-ui-jscode-todolist</link>
            <guid isPermaLink="false">practice-db-design-from-ui-jscode-todolist</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[PK(기본키), FK(외래키) ]]></title>
            <description><![CDATA[✅ PK(Primary Key, 기본키)란? 우리가 살아가는 세상에는 수많은 사람들이 살아간다. 육안으로는 구별하기 힘든 쌍둥이도 존재하고, 이름이 동일한 사람들도 존재한다. 하지만 우리는 사람을 일일이 구별할 수 있어야 한다. 그래서 주민등록번호를 ]]></description>
            <link>https://www.jscode.kr/blog/primary-key-foreign-key</link>
            <guid isPermaLink="false">primary-key-foreign-key</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 6 ]]></title>
            <description><![CDATA[✅ 1:1 관계의 특징 (DB 설계할 때는 1:1 관계가 생각보다 잘 안 나옴) 아무 테이블에 FK를 넣어도 된다. 합쳐도 되는 지 고려해봐야 한다.
(어지간하면 1:1 관계로 분리하지 않는 걸 추천한다.) [Before] users (사용자) [Af]]></description>
            <link>https://www.jscode.kr/blog/rule-3-understand-relationships-6</link>
            <guid isPermaLink="false">rule-3-understand-relationships-6</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[관계형 데이터베이스(RDBMS)의 기본 구성 ]]></title>
            <description><![CDATA[테이블(Table), 컬럼(Column), 로우(Row) MySQL, MariaDB, PostgreSQL과 같은 데이터베이스를 보고 관계형 데이터베이스(RDBMS)라고 부른다. 관계형 데이터베이스는 여러 테이블로 구성된다. 테이블은 쉽게 얘기해서 표라]]></description>
            <link>https://www.jscode.kr/blog/rdbms-basic-components</link>
            <guid isPermaLink="false">rdbms-basic-components</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 4 ]]></title>
            <description><![CDATA[✅ 1:N 관계의 특징 N 쪽의 테이블에 FK가 들어가야 한다. 예시 1) [Before] users (사용자) [After] users (사용자) emails (이메일) 예시 2) [Before] stores (가게) [After] stores (가]]></description>
            <link>https://www.jscode.kr/blog/rule-3-understand-relationships-4</link>
            <guid isPermaLink="false">rule-3-understand-relationships-4</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[데이터베이스 모델링(Datbase Modeling)이란? ]]></title>
            <description><![CDATA[✅ 데이터베이스 모델링(Database Modeling)이란? 애플리케이션을 운영하면서 발생하는 데이터를 잘 분류해서 데이터를 저장해놔야 한다. 그래야 나중에 필요한 데이터가 있을 때 쉽게 찾아서 조회할 수 있고, 데이터를 수정 및 삭제하기도 쉬워진다]]></description>
            <link>https://www.jscode.kr/blog/what-is-database-modeling</link>
            <guid isPermaLink="false">what-is-database-modeling</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 3] 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악해봐라 - 3 ]]></title>
            <description><![CDATA[✅ 예시 2 가게 (stores), 판매 상품 (products) 가게가 판매 상품을 판다. 판매 상품은 가게에 의해 팔린다. 하나의 가게는 여러 개의 상품을 판다(팔 수 있다). 하나의 상품은 하나의 가게에 의해 팔린다. ⇒ 가게 : 상품 = 1 :]]></description>
            <link>https://www.jscode.kr/blog/rule-3-understand-relationships-3</link>
            <guid isPermaLink="false">rule-3-understand-relationships-3</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[규칙 5] 가짜 중복과 진짜 중복을 구별해라 ]]></title>
            <description><![CDATA[✅ 가짜 중복과 진짜 중복을 구별해라. 가짜 중복과 진짜 중복이 어떤 의미인지 설명하기 위해 예시를 바로 보자. posts (게시글) 박재성이라는 사용자가 같은 제목과 같은 내용의 게시글을 3개 작성했다고 가정하자. 겉으로만 봤을 땐 제목 컬럼에서도 ]]></description>
            <link>https://www.jscode.kr/blog/rule-5-identify-fake-vs-real-duplication</link>
            <guid isPermaLink="false">rule-5-identify-fake-vs-real-duplication</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 03:33:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis를 적용하기 전·후 Throughput(처리량) 비교해보기 ]]></title>
            <description><![CDATA[✅ 캐싱을 적용시키기 전의 Throughput 측정 캐싱 코드 주석처리하기 Spring Boot 서버 빌드 및 백그라운드 실행 로컬 환경에서 K6로 성능 테스트 해보기 ✅ 캐싱을 적용시킨 후에 Throughput 측정 캐싱 코드 주석 해제하기 Spri]]></description>
            <link>https://www.jscode.kr/blog/redis-throughput-before-after-test</link>
            <guid isPermaLink="false">redis-throughput-before-after-test</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker Compose로 Redis, Spring Boot 한 번에 띄울 수 있게 구성하기 ]]></title>
            <description><![CDATA[Docker에 초점을 맞춘 강의가 아니기 때문에 Docker에 대한 디테일한 설명은 생략할 예정이다. 혹시 Docker에 대한 기본기를 다지고 싶다면 아래 강의를 추천한다. 

비전공자도 이해할 수 있는 Docker 입문/실전
(https://inf.]]></description>
            <link>https://www.jscode.kr/blog/docker-compose-redis-spring-boot</link>
            <guid isPermaLink="false">docker-compose-redis-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견뎌낼 수 있을까? ]]></title>
            <description><![CDATA[✅ 부하 테스트의 기본 개념 백엔드 서버를 구현하고 나서 배포를 하게 된다. 실제 서비스에 배포를 하기 전에 문득 이런 생각이 들 수도 있다. “혹시 요청이 몰려서 서버가 터지면 어떡하지?” “내 서버는 어느 정도 사용자 요청을 견딜 수 있는 거지?”]]></description>
            <link>https://www.jscode.kr/blog/server-how-many-tps-can-it-handle</link>
            <guid isPermaLink="false">server-how-many-tps-can-it-handle</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS ElastiCache 셋팅하기 ]]></title>
            <description><![CDATA[✅ AWS ElastiCache 셋팅하기 ElastiCache 서비스로 들어가기 캐시 생성을 위해 ‘지금 시작’ 버튼 누르기 클러스터 설정에서 ‘구성’ 선택하기 ‘클러스터 모드’ 설정하기 ‘클러스터 정보’ 입력하기 ‘위치’ 설정하기 ‘클러스터 설정’ ]]></description>
            <link>https://www.jscode.kr/blog/aws-elasticache-setup</link>
            <guid isPermaLink="false">aws-elasticache-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis - 부하 테스트를 위한 환경 셋팅 (k6) ]]></title>
            <description><![CDATA[✅ k6란? 성능 비교를 위해 k6라는 부하테스트 툴을 사용할 것이다. 부하테스트 툴에는 k6 이외에도 ngrinder, jmeter, ab, locust 등 다양한 툴이 있다. 하지만 그 중에서 간단하고 빠르게 테스트 해볼 수 있는 툴인 k6를 활용]]></description>
            <link>https://www.jscode.kr/blog/k6-load-test-setup</link>
            <guid isPermaLink="false">k6-load-test-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS EC2에서 Docker Compose를 활용해 Redis, Spring Boot 띄워보기 ]]></title>
            <description><![CDATA[✅ AWS EC2에서 Docker Compose를 활용해 Redis, Spring Boot 띄워보기 EC2 내에서 사용할 Dockerfile, Docker compose 파일 만들기 로컬에서 구현한 내용을 Github에 Push하기 EC2에서 Git ]]></description>
            <link>https://www.jscode.kr/blog/run-redis-and-spring-boot-on-ec2-with-docker-compose</link>
            <guid isPermaLink="false">run-redis-and-spring-boot-on-ec2-with-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring Boot에 ElastiCache 연결하기 ]]></title>
            <description><![CDATA[✅ Spring Boot에 ElastiCache 연결하기 application.yml 파일 수정하기 Github Repository에 Push하기 EC2에서 Git Pull 받기 기존 서버 종료시키기 Spring Boot 프로젝트 실행시키기 Postm]]></description>
            <link>https://www.jscode.kr/blog/connect-elasticache-to-spring-boot</link>
            <guid isPermaLink="false">connect-elasticache-to-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2, RDS, Spring Boot, ElastiCache를 활용한 아키텍처 구성 ]]></title>
            <description><![CDATA[✅ 이전 아키텍처 구성 ✅ ElastiCache를 도입했을 때의 아키텍처 구성]]></description>
            <link>https://www.jscode.kr/blog/architecture-ec2-rds-springboot-elasticache</link>
            <guid isPermaLink="false">architecture-ec2-rds-springboot-elasticache</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS ElastiCache가 정상적으로 잘 생성됐는 지 확인하기 ]]></title>
            <description><![CDATA[✅ AWS ElastiCache가 정상적으로 잘 생성됐는 지 확인하기 ElastiCache 대시보드 들어가기 ‘기본 엔드포인트’ 주소에서 포트 번호 빼고 복사하기 EC2에 들어가서 ElastiCache에 접속해보기 로컬 환경에서 접속되는 지 테스트해보]]></description>
            <link>https://www.jscode.kr/blog/verify-elasticache-status</link>
            <guid isPermaLink="false">verify-elasticache-status</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유 ]]></title>
            <description><![CDATA[✅ 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유 현업에서 EC2에 Redis를 직접 설치해서 사용하는 경우는 드물다. 일일이 Redis를 설치하고 셋팅하고 관리하면서 확장까지 하려면 신경쓸 게 생각보다 많다. 하]]></description>
            <link>https://www.jscode.kr/blog/why-use-elasticache-instead-of-redis-on-ec2</link>
            <guid isPermaLink="false">why-use-elasticache-instead-of-redis-on-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:38:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis를 적용하기 전후 성능 비교해보기 (Postman) ]]></title>
            <description><![CDATA[성능 개선을 할 땐 반드시 수치를 측정하면서 비교해야 한다. 성능 개선을 할 때 ‘느린 것 같아요’, ‘빨라진 것 같아요’라고 얘기하는 건 잘못된 습관이다. 성능 개선을 할 때는 실제로 얼마나 느린지를 측정해야 하고, 개선을 한 뒤에 얼마나 빨라졌는 ]]></description>
            <link>https://www.jscode.kr/blog/performance-comparison-before-after-redis-spring-boot</link>
            <guid isPermaLink="false">performance-comparison-before-after-redis-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Reids를 포함한 아키텍처 구성 시 대략적으로 AWS 비용 얼마나 나오는 지 ]]></title>
            <description><![CDATA[✅ EC2 EC2 인스턴스 (t3a.small) : 시간당 0.026 USD (24시간당 약 800원) 데이터 전송 비용 : 1 GB당 0.1368 USD (1GB당 약 200원) Public IPv4 비용 : 시간당 0.005 USD (24시간당 약]]></description>
            <link>https://www.jscode.kr/blog/approximate-aws-cost</link>
            <guid isPermaLink="false">approximate-aws-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2, RDS, Spring Boot, Redis를 활용한 아키텍처 구성]]></title>
            <description><![CDATA[✅ 아키텍처 구성]]></description>
            <link>https://www.jscode.kr/blog/architecture-ec2-rds-springboot-redis</link>
            <guid isPermaLink="false">architecture-ec2-rds-springboot-redis</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Spring Boot 프로젝트에 Redis 셋팅 추가하기]]></title>
            <description><![CDATA[✅ Spring Boot 프로젝트에 Redis 셋팅 추가하기 Redis 의존성 추가하기 application.yml 수정하기 Redis 설정 추가하기 BoardService에 캐싱 로직 추가하기 ✅ 테스트 해보기 Spring Boot 서버를 실행시켜서]]></description>
            <link>https://www.jscode.kr/blog/add-redis-to-spring-boot</link>
            <guid isPermaLink="false">add-redis-to-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis 주요 사용 사례 ]]></title>
            <description><![CDATA[Redis의 사용 사례를 검색해보면 아주 다양하다. 검색했을 때 아래와 같은 사용 사례를 확인할 수 있다. 캐싱 (Caching) 세션 관리 (Session Management) 실시간 분석 및 통계 (Real-time Analystics) 메시지 큐]]></description>
            <link>https://www.jscode.kr/blog/redis-primary-example</link>
            <guid isPermaLink="false">redis-primary-example</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Nest.js 프로젝트에 Redis 셋팅 추가하기 ]]></title>
            <description><![CDATA[✅ Nest.js 프로젝트에 Redis 셋팅 추가하기 라이브러리 설치하기 AppModule 코드 수정하기 BoardService 코드 수정하기 ✅ 테스트 해보기 Nest.js 서버 실행시켜서 API 실행시켜보기 Redis-cli를 활용해 정상적으로 캐]]></description>
            <link>https://www.jscode.kr/blog/add-redis-to-nestjs</link>
            <guid isPermaLink="false">add-redis-to-nestjs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis란? / Redis의 장점 ]]></title>
            <description><![CDATA[✅ Redis란? Redis의 의미를 인터넷에 검색해보면 아래와 같이 나온다. 레디스(Redis)는 Remote Dictionary Server의 약자로서, “키-값” 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이]]></description>
            <link>https://www.jscode.kr/blog/what-is-redis</link>
            <guid isPermaLink="false">what-is-redis</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[캐시(Cache), 캐싱(Caching)이란?]]></title>
            <description><![CDATA[✅ 캐시(Cache)란? 캐시(Cache)란, 원본 저장소보다 빠르게 가져올 수 있는 임시 데이터 저장소를 의미한다. 참고로 캐시(Cache)라는 단어는 Redis에서만 쓰이는 용어는 아니고 전반적인 개발 분야에서 통용돼서 쓰인다. [예시] ✅ 캐싱(]]></description>
            <link>https://www.jscode.kr/blog/what-is-cache-and-caching</link>
            <guid isPermaLink="false">what-is-cache-and-caching</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Cache Aside, Write Around 전략의 한계점 / 해결 방법]]></title>
            <description><![CDATA[✅ Cache Aside, Write Around 전략의 한계점 캐시된 데이터와 DB 데이터가 일치하지 않을 수 있다. 캐시에 저장할 수 있는 공간이 비교적 작다. ✅ 이 한계를 어떻게 극복할까? 캐시된 데이터와 DB 데이터가 일치하지 않을 수 있다.]]></description>
            <link>https://www.jscode.kr/blog/cache-aside-write-around-limitations-and-solutions</link>
            <guid isPermaLink="false">cache-aside-write-around-limitations-and-solutions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[데이터를 캐싱할 때 사용하는 전략 (Cache Aside, Write Around) ]]></title>
            <description><![CDATA[레디스를 캐시로 쓸 때 어떤 방식으로 사용할 지 전략이 다양하다. 처음에는 그 중에서 딱 2가지의 전략만 배워도 충분하다. 이 전략이 현업에서 가장 많이 사용되고 있는 전략이다. 나머지의 전략들은 이 2가지 전략이 익숙해진 뒤에 차근차근 추가로 학습하]]></description>
            <link>https://www.jscode.kr/blog/cache-strategies-aside-write-around</link>
            <guid isPermaLink="false">cache-strategies-aside-write-around</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 설명] Nest.js가 v11일 경우 Redis 셋팅 방법 ]]></title>
            <description><![CDATA[✅ Nest.js 버전 확인 방법 Nest.js 프로젝트의 package.json 파일을 열어서 @nestjs/core가 몇 버전인지 확인하면 된다. 만약 아래와 같이 11.1.2라고 기재되어 있다면 Nest.js는 11 버전인 것이다. package]]></description>
            <link>https://www.jscode.kr/blog/nestjs-v11-redis-setup</link>
            <guid isPermaLink="false">nestjs-v11-redis-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis를 추가하기 전 기본적인 Nest.js 프로젝트 셋팅하기 ]]></title>
            <description><![CDATA[Nest.js를 주로 사용하는 수강생이더라도 이전 섹션(로컬 환경에서 Spring Boot + Redis로 구현하기)의 강의를 듣고오는 걸 추천한다. ✅ 기본적인 Nest.js 프로젝트 셋팅하기 Nest.js  프로젝트 생성 TypeORM 설치하기 D]]></description>
            <link>https://www.jscode.kr/blog/nestjs-basic-setup</link>
            <guid isPermaLink="false">nestjs-basic-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis를 적용하기 전후 성능 비교해보기 (Postman) ]]></title>
            <description><![CDATA[✅ Redis를 적용했을 때의 성능 측정 # 스프링 프로젝트 경로로 들어가서 아래 명령어 실행
$ ./gradlew clean build -x test 
$ cd build/libs
$ java -jar -Dspring.profiles.active=p]]></description>
            <link>https://www.jscode.kr/blog/performance-comparison-before-after-redis-nestjs</link>
            <guid isPermaLink="false">performance-comparison-before-after-redis-nestjs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[캐싱으로 조회 성능 개선을 하기 전 OOO을 항상 먼저해야 한다! ]]></title>
            <description><![CDATA[✅ 데이터 조회 성능을 개선하는 방법 데이터 조회 성능을 개선하는 방법은 다양하다. 
(아래 용어가 뭔지 몰라도 상관없다. ‘여러가지 방식으로 데이터 조회 성능을 개선할 수 있구나’ 정도로 알고 넘어가자.) SQL 튜닝 캐싱 서버 활용 (Redis 등]]></description>
            <link>https://www.jscode.kr/blog/before-caching-always-do-this-first</link>
            <guid isPermaLink="false">before-caching-always-do-this-first</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis 기본 명령어 익히기 ]]></title>
            <description><![CDATA[대부분의 Redis 강의나 책을 보시면 알겠지만 자료 구조(string, list, hash, Set, sorted Set 등)를 설명하고, 수없이 많은 명령어(SET, GET, EXISTS, DEL, HSET 등)를 설명하고 있다. 하지만 레디스를 ]]></description>
            <link>https://www.jscode.kr/blog/redis-basic-commands</link>
            <guid isPermaLink="false">redis-basic-commands</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis에서 Key 네이밍 컨벤션 익히기]]></title>
            <description><![CDATA[Redis의 Key 이름을 잘 짓는 건 굉장히 중요하다. 따라서 현업에서 자주 사용하는 Key 네이밍 컨벤션을 배워보자. (꼭 이렇게 적어야만 하는 건 아니니 필요에 따라 응용해서 사용해도 된다.) ✅ 현업에서 자주 활용하는 네이밍 컨벤션 회사마다 여]]></description>
            <link>https://www.jscode.kr/blog/redis-key-naming-convention</link>
            <guid isPermaLink="false">redis-key-naming-convention</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[백엔드 채용 공고에 종종 등장하는 ‘대용량 트래픽 처리 경험’, ‘Redis 사용 경험’ ]]></title>
            <description><![CDATA[✅ 최근 백엔드 개발자 채용 공고에 자주 등장하는 스펙 백엔드 개발자 채용 공고를 살펴보면 ‘대용량 트래픽’에 관한 얘기와 ‘NoSQL’에 관한 얘기가 자주 나온다. 이 역량이 서비스가 점점 고도화 될 수록 빼놓을 수 없는 역량이기 때문이다. 이 2가]]></description>
            <link>https://www.jscode.kr/blog/company-requires-redis-experience</link>
            <guid isPermaLink="false">company-requires-redis-experience</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[로컬(Windows, MacOS)에서 Redis 설치하기 ]]></title>
            <description><![CDATA[✅ MacOS에서 Redis 설치하기 Redis 설치 # HomeBrew 설치 (이미 설치되어 있다면 재설치 필요 X)
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/i]]></description>
            <link>https://www.jscode.kr/blog/install-redis-on-local</link>
            <guid isPermaLink="false">install-redis-on-local</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2, RDS, Spring Boot, Redis 셋팅 ]]></title>
            <description><![CDATA[AWS에 초점을 맞춘 강의가 아니기 때문에 EC2, RDS에 대한 디테일한 설명은 생략할 예정이다. 혹시 AWS에 대한 기본기를 다지고 싶다면 아래 강의를 추천한다. 

비전공자도 이해할 수 있는 AWS 입문/실전 (https://inf.run/73a]]></description>
            <link>https://www.jscode.kr/blog/ec2-rds-springboot-redis-setup</link>
            <guid isPermaLink="false">ec2-rds-springboot-redis-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Redis를 추가하기 전 기본적인 Spring Boot 프로젝트 셋팅하기 ]]></title>
            <description><![CDATA[✅ 기본 Spring Boot 프로젝트 셋팅하기 동일한 환경에서 실습을 진행하기 위해 아래 버전을 사용할 것을 권장한다.
- Spring Boot는 3.x.x 버전
- MySQL 8.x 버전
- JDK 17 Spring Boot 프로젝트 셋팅 불필요한]]></description>
            <link>https://www.jscode.kr/blog/spring-boot-basic-setup</link>
            <guid isPermaLink="false">spring-boot-basic-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 02:37:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 유저 이름으로 특정 기간에 작성된 글 검색하는 SQL문 튜닝하기]]></title>
            <description><![CDATA[✅ 유저 이름으로 특정 기간에 작성된 글 검색하기 기본 테이블 셋팅 더미 데이터 추가 기존 SQL문 성능 측정하기 실행 계획 조회해보기 성능 개선해보기]]></description>
            <link>https://www.jscode.kr/blog/search-posts-by-username-and-period</link>
            <guid isPermaLink="false">search-posts-by-username-and-period</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] WHERE문이 사용된 SQL문 튜닝하기 - 2 ]]></title>
            <description><![CDATA[✅ Sales 부서이면서 최근 3일 이내에 가입한 유저 조회하기 테이블 생성 100만 건의 랜덤 데이터 삽입 데이터 조회해서 성능 측정하기 실행 계획 조회해보기 성능 개선을 위한 인덱스 추가 [이것만은 꼭 기억해두자!]
데이터 액세스(rows)를 크게]]></description>
            <link>https://www.jscode.kr/blog/where-clause-tuning-2</link>
            <guid isPermaLink="false">where-clause-tuning-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2024년 1학기 평균 성적이 100점인 학생 조회하는 SQL문 튜닝하기 ]]></title>
            <description><![CDATA[✅ 2024년 1학기 평균 성적이 100점인 학생 조회하기 기본 테이블 셋팅 더미 데이터 추가 기존 SQL문 성능 조회해보기 성능 개선해보기]]></description>
            <link>https://www.jscode.kr/blog/2024-average-score-100-sql-tuning</link>
            <guid isPermaLink="false">2024-average-score-100-sql-tuning</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[실행 계획에서 type 의미 분석하기 (ALL, index)]]></title>
            <description><![CDATA[실행 계획(EXPLAIN)을 조회했을 때 나오는 결과값 중 하나인 type에 대해서 자세히 알아보자. 성능 최적화에 있어서 이 값의 의미를 파악하는 게 굉장히 중요하다. ✅ ALL : 풀 테이블 스캔 풀 테이블 스캔(Full Table Scan)이란 ]]></description>
            <link>https://www.jscode.kr/blog/explain-type-all-index</link>
            <guid isPermaLink="false">explain-type-all-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[기본으로 설정되는 인덱스 (PK) ]]></title>
            <description><![CDATA[✅ 기본키 (Primary Key, PK) 테이블에서 특정 데이터를 식별하기 위한 키를 보고 기본키(Primary Key, PK)라고 부른다. 대부분의 경우에 테이블을 생성할 때 PK를 설정한다. PK의 특징 중 하나는 PK를 기준으로 정렬을 해서 데]]></description>
            <link>https://www.jscode.kr/blog/default-index-primary-key</link>
            <guid isPermaLink="false">default-index-primary-key</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[멀티 컬럼 인덱스 생성 시 주의점 ]]></title>
            <description><![CDATA[✅ 멀티 컬럼 인덱스를 만들어두면 일반 인덱스처럼 활용할 수 있다. 이전에 우리는 멀티 컬럼 인덱스를 아래와 같은 구성으로 만들었다. 부서를 기준으로 먼저 정렬이 되어 있고, 그 다음 같은 부서 내에서 이름을 기준으로 정렬되어 있다. 이런 구조로 되어]]></description>
            <link>https://www.jscode.kr/blog/multi-column-index-cautions</link>
            <guid isPermaLink="false">multi-column-index-cautions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] WHERE문이 사용된 SQL문 튜닝하기 - 1 ]]></title>
            <description><![CDATA[✅ 최근 3일 이내에 가입한 유저 조회하기 테이블 생성 100만 건의 랜덤 데이터 삽입 데이터 조회해서 성능 측정하기 실행 계획 조회해보기 성능 개선을 위한 인덱스 추가 데이터 조회해서 성능 측정하기 실행 계획 조회해보기 [이것만은 꼭 기억해두자!]
]]></description>
            <link>https://www.jscode.kr/blog/where-clause-tuning-1</link>
            <guid isPermaLink="false">where-clause-tuning-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인덱스 직접 설정해보기 / 성능 측정해보기 ]]></title>
            <description><![CDATA[✅ 인덱스 직접 설정해보기 / 성능 측정하고 비교해보기 아래의 구성과 동일하게 테이블을 셋팅해보고, 인덱스를 설정해보자. 테이블 생성 100만 건의 랜덤 데이터 삽입 데이터 조회해보기 SQL문 실행 시 걸리는 소요 시간 측정하기 인덱스 설정하기 데이터]]></description>
            <link>https://www.jscode.kr/blog/create-index-and-measure-performance</link>
            <guid isPermaLink="false">create-index-and-measure-performance</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 멀티 컬럼 인덱스 직접 설정해보기 / 작동방식 이해하기 ]]></title>
            <description><![CDATA[✅ 멀티 컬럼 인덱스 직접 설정해보기 테이블 생성 더미 데이터 생성 멀티 컬럼 인덱스 생성 멀티 컬럼 인덱스 생성 잘 됐는 지 확인하기 ✅ 데이터 조회할 때 인덱스를 어떻게 활용하는 지 과정 이해하기 아래 SQL문을 실행시킬 때 멀티 컬럼 인덱스를 어]]></description>
            <link>https://www.jscode.kr/blog/create-multi-column-index</link>
            <guid isPermaLink="false">create-multi-column-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2023년 주문 데이터 조회하는 SQL문 튜닝하기 ]]></title>
            <description><![CDATA[✅ 특정 유저의 2023년 주문 데이터 조회하기 기본 테이블 셋팅 더미 데이터 추가 기존 SQL문 성능 조회해보기 실행 계획 조회해보기 성능 개선해보기]]></description>
            <link>https://www.jscode.kr/blog/2023-order-data-sql-tuning</link>
            <guid isPermaLink="false">2023-order-data-sql-tuning</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[실행 계획에서 type 의미 분석하기 (const, range, ref)]]></title>
            <description><![CDATA[✅ const :  1건의 데이터를 바로 찾을 수 있는 경우 조회하고자 하는 1건의 데이터를 헤매지 않고 단번에 찾아올 수 있을 때 const가 출력된다. 그러다보니 고유 인덱스 또는 기본 키를 사용해서 1건의 데이터만 조회한 경우에 const가 출력]]></description>
            <link>https://www.jscode.kr/blog/explain-type-const-range-ref</link>
            <guid isPermaLink="false">explain-type-const-range-ref</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 특정 부서에서 최대 연봉을 가진 사용자들 조회하는 SQL문 튜닝하기]]></title>
            <description><![CDATA[✅ 특정 부서에서 최대 연봉을 가진 사용자들 조회하기 테이블 생성 100만 건의 랜덤 데이터 삽입 기존 SQL문 성능 체크하기 실행 계획 조회해보기 인덱스 추가하기 성능 측정해보기]]></description>
            <link>https://www.jscode.kr/blog/max-salary-in-department-sql-tuning</link>
            <guid isPermaLink="false">max-salary-in-department-sql-tuning</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 좋아요 많은 순으로 게시글 조회하는 SQL문 튜닝하기 ]]></title>
            <description><![CDATA[✅ 좋아요 많은 순으로 게시글 조회하기 기본 테이블 셋팅 더미 데이터 추가 성능 개선해야 할 SQL문 실행 계획 조회해보기 성능 개선 성능 개선 후 실행 계획]]></description>
            <link>https://www.jscode.kr/blog/posts-by-likes-desc-sql-tuning</link>
            <guid isPermaLink="false">posts-by-likes-desc-sql-tuning</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] ORDER BY문이 사용된 SQL문 튜닝하기 ]]></title>
            <description><![CDATA[✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 데이터 조회해서 성능 측정하기 실행 계획 조회해보기 성능 개선을 위한 인덱스 추가 성능 측정 [이것만은 꼭 기억해두자!]
- ORDER BY는 시간이 오래걸리는 작업이므로 최대한 피해주는 것이 좋다]]></description>
            <link>https://www.jscode.kr/blog/order-by-sql-tuning</link>
            <guid isPermaLink="false">order-by-sql-tuning</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[SQL문의 ‘실행 계획’ 사용해보기 (EXPLAIN)]]></title>
            <description><![CDATA[✅ ’실행 계획’이란 ? 옵티마이저가 SQL문을 어떤 방식으로 어떻게 처리할 지를 계획한 걸 의미한다. 이 실행 계획을 보고 비효율적으로 처리하는 방식이 있는 지 점검하고, 비효율적인 부분이 있다면 더 효율적인 방법으로 SQL문을 실행하게끔 튜닝을 하]]></description>
            <link>https://www.jscode.kr/blog/explain-execution-plan</link>
            <guid isPermaLink="false">explain-execution-plan</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] WHERE문에 인덱스를 걸기 vs ORDER BY문에 인덱스를 걸기 ]]></title>
            <description><![CDATA[✅ WHERE문에 인덱스를 걸기 vs ORDER BY문에 인덱스를 걸기 절대적인 건 없다. 실행 계획과 SQL 실행 시간을 보면서 어떻게 인덱스를 거는 게 나은지 찾아가는 게 정확하다. 한 번 예시를 보고 판단해보자. 테이블 생성 100만 건의 랜덤 ]]></description>
            <link>https://www.jscode.kr/blog/where-index-vs-orderby-index</link>
            <guid isPermaLink="false">where-index-vs-orderby-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[멀티 컬럼 인덱스 (Mulitple-Column Index)란? ]]></title>
            <description><![CDATA[✅ 멀티 컬럼 인덱스란? 멀티 컬럼 인덱스란, 2개 이상의 컬럼을 묶어서 설정하는 인덱스를 뜻한다. 즉, 데이터를 빨리 찾기 위해 2개 이상의 컬럼을 기준으로 미리 정렬해놓은 표이다. ✅ 예시를 통해 멀티 컬럼 인덱스 의미를 직관적으로 이해해보자. 아]]></description>
            <link>https://www.jscode.kr/blog/what-is-multiple-column-index</link>
            <guid isPermaLink="false">what-is-multiple-column-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 한 번에 너무 많은 데이터를 조회하는 SQL문 튜닝하기]]></title>
            <description><![CDATA[✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 데이터 조회해보기 ✅ 조회 결과 데이터의 개수 줄이기 실제 페이스북, 인스타그램의 서비스를 보더라도 한 번에 모든 게시글의 데이터를 불러오지 않는다. 스크롤을 내리면서 필요한 데이터를 그때그때 로딩]]></description>
            <link>https://www.jscode.kr/blog/tuning-large-scan-query</link>
            <guid isPermaLink="false">tuning-large-scan-query</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] HAVING문이 사용된 SQL문 튜닝하기 ]]></title>
            <description><![CDATA[✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성하기 데이터 조회해서 성능 측정하기 실행 계획 조회해보기 성능 개선하기 실행 계획 조회해보기 [이것만은 꼭 기억해두자!]
- HAVING문 대신에 WHERE문을 쓸 수 있는 지 체크해보자]]></description>
            <link>https://www.jscode.kr/blog/having-clause-sql-tuning</link>
            <guid isPermaLink="false">having-clause-sql-tuning</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 부서별 최대 연봉을 가진 사용자들 조회하는 SQL문 튜닝하기 ]]></title>
            <description><![CDATA[✅ 부서별 최대 연봉을 가진 사용자들 조회하기 테이블 생성 100만 건의 랜덤 데이터 삽입 기존 SQL문 성능 체크하기 실행 계획 조회해보기 성능 개선해보기]]></description>
            <link>https://www.jscode.kr/blog/max-salary-group-by-department-sql-tuning</link>
            <guid isPermaLink="false">max-salary-group-by-department-sql-tuning</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인덱스를 걸었는데도 인덱스가 작동하지 않는 경우 - 2 ]]></title>
            <description><![CDATA[✅ 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성 실행 계획 조회해보기 인덱스 컬럼을 가공해서 사용하지 않게 SQL문 수정하기 [이것만은 꼭 기억해두자!]
- 인덱스 컬럼을 가공(함수 적용, 산술 연산, 문자역 조작 등)하면, MySQ]]></description>
            <link>https://www.jscode.kr/blog/index-not-used-2</link>
            <guid isPermaLink="false">index-not-used-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인덱스를 걸었는데도 인덱스가 작동하지 않는 경우 - 1 ]]></title>
            <description><![CDATA[✅ 인덱스가 작동하지 않는 예시 테이블 생성 100만 건의 랜덤 데이터 삽입 인덱스 생성하기 실행 계획 조회해보기 [이것만은 꼭 기억해두자!]
넓은 범위의 데이터를 조회하는 경우, 인덱스를 사용해서 조회하는 것보다 풀 테이블 스캔이 효과적이라고 판단한]]></description>
            <link>https://www.jscode.kr/blog/index-not-used-1</link>
            <guid isPermaLink="false">index-not-used-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[커버링 인덱스(Covering Index)란? ]]></title>
            <description><![CDATA[✅ 커버링 인덱스(Covering Index)란? SQL문을 실행시킬 때 필요한 모든 컬럼을 갖고 있는 인덱스를 커버링 인덱스(Covering Index)라고 한다. ✅ 예시 위와 같은 users 테이블이 있고, name 인덱스가 있다고 가정하자. 그]]></description>
            <link>https://www.jscode.kr/blog/what-is-covering-index</link>
            <guid isPermaLink="false">what-is-covering-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 인덱스를 무식하게 많이 걸면 어떻게 될까? ]]></title>
            <description><![CDATA[인덱스를 사용하면 데이터를 조회할 때의 성능이 향상된다. 그러면 인덱스를 무조건적으로 많이 추가하는 게 좋다고 착각할 수도 있다. 하지만 인덱스를 추가하면 조회 성능은 올라가지만, 쓰기 작업(삽입, 수정, 삭제)의 성능은 저하된다. 왜 그런 지 직관적]]></description>
            <link>https://www.jscode.kr/blog/what-causes-when-creating-too-many-index</link>
            <guid isPermaLink="false">what-causes-when-creating-too-many-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[인덱스(Index)란? ]]></title>
            <description><![CDATA[✅ 인덱스(Index)란? 인덱스의 정의를 찾아보면 아래와 같다. 인덱스(Index)는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조를 뜻한다. 위의 정의보다는 아래의 의미로 인덱스를 기억하자. 그래야 훨씬 직관적으로 이해하기가 쉽]]></description>
            <link>https://www.jscode.kr/blog/what-is-index</link>
            <guid isPermaLink="false">what-is-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[제약 조건을 추가하면 자동으로 생성되는 인덱스 (UNIQUE)]]></title>
            <description><![CDATA[✅ UNIQUE 제약 조건을 추가하면 자동으로 인덱스가 생성된다. MySQL은 UNIQUE 제약 조건을 추가하면 자동으로 인덱스가 생성된다. 확인해보자. 테이블 생성 인덱스 확인하기 이런 특징 때문에 UNIQUE 특징으로 인해 생성되는 인덱스를 보고 ]]></description>
            <link>https://www.jscode.kr/blog/unique-constraint-auto-index</link>
            <guid isPermaLink="false">unique-constraint-auto-index</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:02:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[성능 개선을 위한 MySQL 구조 파악 / SQL 튜닝의 핵심 ]]></title>
            <description><![CDATA[MySQL 구조는 왜 갑자기 파악하나요?
→ 어떤 부분에서 MySQL의 성능을 많이 잡아 먹는지, 어떤 요인이 주로 문제를 일으키는 지 파악할 수 있어야 한다. 그 원인을 파악하기 위해서는 MySQL 구조를 알아야만 한다. ✅ MySQL의 아키텍처 M]]></description>
            <link>https://www.jscode.kr/blog/mysql-architecture-and-sql-tuning-core</link>
            <guid isPermaLink="false">mysql-architecture-and-sql-tuning-core</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[신입 백엔드 면접에서 자주 물어보는 ‘DB 성능 최적화’ 경험?! ]]></title>
            <description><![CDATA[✅ 신입 백엔드 개발자 면접에 종종 등장하는 ‘DB 성능 최적화 경험’ MySQL과 같은 DB를 개인 프로젝트나 토이 프로젝트에서 사용할 때는 DB 성능이 느려지는 경우가 거의 없다. 하지만 실제 현업에서 DB를 사용하다보면 성능이 느려지는 경우를 꼭]]></description>
            <link>https://www.jscode.kr/blog/junior-backend-db-performance-optimization-interview</link>
            <guid isPermaLink="false">junior-backend-db-performance-optimization-interview</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DB 성능 개선할 때 ‘SQL 튜닝’을 가장 먼저 해야 하는 이유 (vs 스케일업, 레플리케이션, 샤딩, 캐싱) ]]></title>
            <description><![CDATA[✅ DB 성능을 개선하는 방법 DB에 부하가 걸렸을 때 성능을 개선하는 방법은 다양하다. 
(아래 용어가 뭔지 몰라도 상관없다. ‘여러가지 방식으로 DB 성능을 개선할 수 있구나’ 정도로 알고 넘어가자.) SQL 튜닝 캐싱 서버 활용 (Redis 등)]]></description>
            <link>https://www.jscode.kr/blog/why-sql-tuning-first-for-db-performance</link>
            <guid isPermaLink="false">why-sql-tuning-first-for-db-performance</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 10:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Vercel에서 환경변수 설정하기]]></title>
            <description><![CDATA[1. 환경변수를 설정하고자 하는 프로젝트에 들어가기 2. 환경변수 설정 페이지에 들어가기 3. 환경변수 설정하기 4. 환경변수 잘 추가됐는 지 확인하기 환경변수 설정하는 페이지의 하단 부분에서 등록된 환경변수를 확인할 수 있다. ]]></description>
            <link>https://www.jscode.kr/blog/setup-environment-variables-in-vercel</link>
            <guid isPermaLink="false">setup-environment-variables-in-vercel</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 07:06:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS EC2에 Docker + Spring Boot 배포하기]]></title>
            <description><![CDATA[AWS EC2에 Spring Boot 프로젝트만 배포를 해야하는 상황이라고 가정하자. ✅ Docker CLI로 배포하기 로컬 환경에서 프로젝트 셋팅 간단한 코드 작성 Dockerfile 작성하기 Spring Boot 프로젝트 빌드하기 AWS EC2에서]]></description>
            <link>https://www.jscode.kr/blog/deploy-springboot-with-docker-to-ec2</link>
            <guid isPermaLink="false">deploy-springboot-with-docker-to-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Ubuntu에서 Docker, Docker Compose 설치하기]]></title>
            <description><![CDATA[✅ Ubuntu에서 Docker, Docker Compose 설치하기 $ sudo apt-get update && \
	sudo apt-get install -y apt-transport-https ca-certificates curl software]]></description>
            <link>https://www.jscode.kr/blog/install-docker-and-docker-compose-in-ubuntu</link>
            <guid isPermaLink="false">install-docker-and-docker-compose-in-ubuntu</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS EC2에 Docker + Spring Boot, MySQL, Redis 배포하기]]></title>
            <description><![CDATA[Untitled 
위 구성(Spring Boot)에서 MySQL과 Redis를 같이 한 번에 배포해야 하는 상황이라고 가정하자. AWS EC2라고 해서 지금까지 배운 내용과 크게 다를 건 없다. compose.yml에 MySQL, Redis의 내용만 ]]></description>
            <link>https://www.jscode.kr/blog/deploy-springboot-and-mysql-and-redis-with-docker-to-ec2</link>
            <guid isPermaLink="false">deploy-springboot-and-mysql-and-redis-with-docker-to-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] AWS ECR(Elastic Container Registry) 사용해보기]]></title>
            <description><![CDATA[✅ AWS CLI 설치 [맥(Mac OS)] $ brew install awscli
$ aws --version # 잘 출력된다면 정상 설치된 상태 [윈도우(Windows)] 이 링크(https://awscli.amazonaws.com/AWSCLIV2]]></description>
            <link>https://www.jscode.kr/blog/experience-aws-ecr</link>
            <guid isPermaLink="false">experience-aws-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AWS ECR(Elastic Container Registry)이 뭘까? 왜 배울까?]]></title>
            <description><![CDATA[✅ AWS ECR이 뭘까? 필요한 이미지를 다운로드 받을 때 Dockerhub이라는 곳에서 다운받는다고 했었다. Dockerhub에서는 이미지를 저장 및 다운받을 수 있는 저장소 역할을 한다고도 했다. Dockerhub과 동일한 역할을 하는 서비스가 ]]></description>
            <link>https://www.jscode.kr/blog/why-learn-aws-ecr</link>
            <guid isPermaLink="false">why-learn-aws-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] MySQL, Redis 컨테이너 동시에 띄워보기]]></title>
            <description><![CDATA[✅ Docker Compose로 MySQL, Redis 실행시키기 compose 파일 작성하기 compose 파일 실행시키기 compose 실행 현황 보기 compose로 실행된 컨테이너 삭제]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-and-redis-together</link>
            <guid isPermaLink="false">run-mysql-and-redis-together</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker Compose 전체 흐름 느껴보기 (Nginx 설치 및 실행)]]></title>
            <description><![CDATA[✅ Docker CLI로 컨테이너를 실행시킬 때 $ docker run --name webserver -d -p 80:80 nginx ✅ Docker Compose로 컨테이너를 실행시킬 때 compose.yml 파일 작성하기 compose 파일 실행시]]></description>
            <link>https://www.jscode.kr/blog/experience-full-docker-compose-flow</link>
            <guid isPermaLink="false">experience-full-docker-compose-flow</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 웹 프론트엔드 프로젝트(Next.js)를 Docker로 배포하기 ]]></title>
            <description><![CDATA[✅ 웹 프론트엔드 프로젝트(Next.js)를 Docker로 배포하기 Next.js 프로젝트 만들기 Dockerfile 작성하기 .dockerignore 작성하기 Dockerfile을 바탕으로 이미지 빌드하기 이미지가 잘 생성됐는 지 확인하기 생성한 이]]></description>
            <link>https://www.jscode.kr/blog/practice-for-running-nextjs-with-docker</link>
            <guid isPermaLink="false">practice-for-running-nextjs-with-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 백엔드 프로젝트(Spring Boot) 프로젝트를 Docker로 실행시키기]]></title>
            <description><![CDATA[✅ 백엔드 프로젝트(Spring Boot) 프로젝트를 Docker로 실행시키기 프로젝트 셋팅 간단한 코드 작성 Dockerfile 작성하기 Spring Boot 프로젝트 빌드하기 Dockerfile을 바탕으로 이미지 빌드하기 이미지가 잘 생성됐는 지 ]]></description>
            <link>https://www.jscode.kr/blog/practice-for-running-spring-boot-with-docker</link>
            <guid isPermaLink="false">practice-for-running-spring-boot-with-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 자료] Windows에서 lsof, kill, sudo 명령어가 작동하지 않을 때 대처 방법]]></title>
            <description><![CDATA[✅ 사용 중인 포트 검색 Windows netstat -ano | findstr [포트 번호]

netstat -ano | findstr 8080 Mac lsof -i :[포트 번호]

lsof -i :8080 ✅ 프로세스 종료 Windows task]]></description>
            <link>https://www.jscode.kr/blog/solution-when-sudo-not-working</link>
            <guid isPermaLink="false">solution-when-sudo-not-working</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ENTRYPOINT : 컨테이너가 시작할 때 실행되는 명령어]]></title>
            <description><![CDATA[✅ 의미 ENTRYPOINT는 컨테이너가 생성되고 최초로 실행할 때 수행되는 명령어를 뜻한다. 쉽게 설명하자면 ENTRYPOINT에는 미니 컴퓨터의 전원을 키고나서 실행시키고 싶은 명령어를 적으면 된다. ✅ 사용법 # 문법
ENTRYPOINT [명령문]]></description>
            <link>https://www.jscode.kr/blog/dockerfile-entrypoint</link>
            <guid isPermaLink="false">dockerfile-entrypoint</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] FROM : 베이스 이미지 생성]]></title>
            <description><![CDATA[🎯 JDK 17 베이스 이미지로 컨테이너 띄워보기 Dockerfile 만들기 Dockerfile을 기반으로 이미지 만들기 이미지를 기반으로 컨테이너 띄우기 컨테이너 조회하기 컨테이너 내부로 들어가서 jdk가 잘 깔렸는지 확인해보기 🎯 Node 베이]]></description>
            <link>https://www.jscode.kr/blog/practice-for-create-base-image</link>
            <guid isPermaLink="false">practice-for-create-base-image</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 컨테이너(Container) 조회 / 중지 / 삭제 ]]></title>
            <description><![CDATA[✅ 컨테이너 조회 [실행 중인 컨테이너들만 조회] $ docker ps ps : process status의 약자 [모든 컨테이너 조회 (작동 중인 컨테이너 + 작동을 멈춘 컨테이너)] $ docker ps -a -a : all의 약자 ✅ 컨테이너 중]]></description>
            <link>https://www.jscode.kr/blog/retrieve-docker-container</link>
            <guid isPermaLink="false">retrieve-docker-container</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot, MySQL 컨테이너 동시에 띄워보기]]></title>
            <description><![CDATA[✅ Spring Boot, MySQL 컨테이너 동시에 띄워보기 Spring Boot 프로젝트 셋팅 간단한 코드 작성 application.yml에 DB 연결을 위한 정보 작성하기 불필요한 테스트 코드 삭제 Dockerfile 작성하기 compose.y]]></description>
            <link>https://www.jscode.kr/blog/run-spring-boot-and-mysql-together</link>
            <guid isPermaLink="false">run-spring-boot-and-mysql-together</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker로 MySQL 실행시켜보기  - 1]]></title>
            <description><![CDATA[✅ Docker로 MySQL 실행시켜보기 MySQL 이미지를 바탕으로 컨테이너 실행시키기 컨테이너가 잘 실행되고 있는 지 체크 컨테이너 실행시킬 때 에러 없이 잘 실행됐는 지 로그 체크 DBeaver에도 연결시켜보기 ✅ 그림으로 이해하기]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-with-docker-1</link>
            <guid isPermaLink="false">run-mysql-with-docker-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 이미지(Image) 조회 / 삭제]]></title>
            <description><![CDATA[✅ 다운받은 모든 이미지 조회 $ docker image ls ls : list의 약자 REPOSITORY : 이미지 이름(이미지명) TAG : 이미지 태그명 IMAGE ID : 이미지 ID CREATED : 이미지가 생성된 날짜 (다운받은 날짜 X)]]></description>
            <link>https://www.jscode.kr/blog/retrieve-docker-image</link>
            <guid isPermaLink="false">retrieve-docker-image</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker Compose로 프론트엔드(HTML, CSS, Nginx) 실행시키기]]></title>
            <description><![CDATA[✅ Docker Compose로 프론트엔드(HTML, CSS, Nginx) 실행시키기 HTML, CSS 파일 만들기 Dockerfile 작성하기 compose 파일 작성하기 compose 파일 실행시키기 compose 실행 현황 보기 localhost]]></description>
            <link>https://www.jscode.kr/blog/run-html-with-docker-compose</link>
            <guid isPermaLink="false">run-html-with-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Dockerfile이란?]]></title>
            <description><![CDATA[✅ Dockerfile이란? Docker 이미지는 Dockerhub을 통해 다운받아서 사용할 수 있다. 이 Docker 이미지들도 누군가 만들어서 Dockerhub에 올려놓은 것이다. 그럼 도대체 이 Dcoker 이미지는 어떻게 만드는 걸까? Dock]]></description>
            <link>https://www.jscode.kr/blog/what-is-dockerfile</link>
            <guid isPermaLink="false">what-is-dockerfile</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker Volume(도커 볼륨)]]></title>
            <description><![CDATA[✅ 컨테이너가 가진 문제점 Docker를 활용하면 특정 프로그램을 컨테이너로 띄울 수 있다. 이 프로그램에 기능이 추가되면 새로운 이미지를 만들어서 컨테이너를 실행시켜야 한다. 이 때, Docker는 기존 컨테이너에서 변경된 부분을 수정하지 않고, 새]]></description>
            <link>https://www.jscode.kr/blog/docker-volume</link>
            <guid isPermaLink="false">docker-volume</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[컨테이너로 실행시킨 Spring Boot가 MySQL에 연결이 안 되는 이유]]></title>
            <description><![CDATA[✅ 컨테이너로 실행시킨 Spring Boot가 MySQL에 연결이 안 되는 이유 각각의 컨테이너는 자신만의 네트워크망과 IP 주소를 가지고 있다. 호스트 컴퓨터 입장에서 localhost는 호스트 컴퓨터를 가리키지만, Spring Boot 컨테이너 입]]></description>
            <link>https://www.jscode.kr/blog/why-not-connecting-mysql-to-spring-boot</link>
            <guid isPermaLink="false">why-not-connecting-mysql-to-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 컨테이너(Container) 생성 / 실행 - 1]]></title>
            <description><![CDATA[✅ 컨테이너 생성 이미지를 바탕으로 컨테이너를 생성한다. 이 때, 컨테이너를 실행시키지는 않는다. 
(컨테이너를 실행하지 않고 생성만 하는 경우가 잘 없어서, 이 명령어는 잘 사용하지 않는다.) # docker create 이미지명[:태그명]
$ do]]></description>
            <link>https://www.jscode.kr/blog/create-docker-container-1</link>
            <guid isPermaLink="false">create-docker-container-1</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[종료된 컨테이너에 들어가서 디버깅하고 싶을 때]]></title>
            <description><![CDATA[프로그래밍을 할 때 중간중간 잘 작동하는 지 확인하는 습관은 굉장히 중요하다. 어떤 명령어를 입력하고 난 뒤에 명령어가 정상적으로 수행됐는 지 어떻게 확인할 수 있는 지 방법을 찾아봐야 한다. 

이 습관이 몸에 익으면 어떤 명령어를 수행하더라도 그 ]]></description>
            <link>https://www.jscode.kr/blog/how-to-debug-terminated-container</link>
            <guid isPermaLink="false">how-to-debug-terminated-container</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 컨테이너(Container) 로그 조회 ]]></title>
            <description><![CDATA[컨테이너를 실행시키고나서 실행시킨 컨테이너가 잘 실행되고 있는 지, 에러가 발생한 건 아닌 지 로그를 확인할 수 있어야 한다. 디버깅할 때 필수로 확인해야 하는 게 로그다. 지금부터 컨테이너에서 발생한 로그는 어떻게 확인하는 지 알아보자. ✅ 컨테이너]]></description>
            <link>https://www.jscode.kr/blog/retrieve-docker-contianer-log</link>
            <guid isPermaLink="false">retrieve-docker-contianer-log</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker Compose로 MySQL 실행시키기]]></title>
            <description><![CDATA[✅ Docker CLI로 컨테이너를 실행시킬 때 $ docker run -e MYSQL_ROOT_PASSWORD=pwd1234 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-with-docker-compose</link>
            <guid isPermaLink="false">run-mysql-with-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 실행중인 컨테이너 내부에 접속하기 (exec -it) ]]></title>
            <description><![CDATA[✅ 컨테이너 개념 다시 짚어보기 위 설명에서 컨테이너는 미니 컴퓨터라고 표현했다. 즉, 호스트 컴퓨터 안에 다른 새로운 컴퓨터가 여러개 있는 것과 같다. 따라서 각각의 컨테이너는 자기만의 컴퓨터 공간(OS, 저장 공간, 프로그램 등)을 가지고 있다. ]]></description>
            <link>https://www.jscode.kr/blog/connect-to-running-container</link>
            <guid isPermaLink="false">connect-to-running-container</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker로 PostgreSQL 실행시켜보기]]></title>
            <description><![CDATA[✅ Docker로 PostgreSQL 실행시켜보기 PostgreSQL 이미지를 바탕으로 컨테이너 실행시키기 컨테이너가 잘 실행되고 있는 지 체크 컨테이너 실행시킬 때 에러 없이 잘 실행됐는 지 로그 체크 PostgreSQL 컨테이너에 접속 Postgr]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-with-postgresql</link>
            <guid isPermaLink="false">run-mysql-with-postgresql</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker Compose로 Redis 실행시키기]]></title>
            <description><![CDATA[✅ Docker CLI로 컨테이너를 실행시킬 때 $ docker run -d -p 6379:6379 redis ✅ Docker Compose로 컨테이너를 실행시킬 때 compose.yml 파일 작성하기 compose 파일 실행시키기 compose 실행]]></description>
            <link>https://www.jscode.kr/blog/run-redis-with-docker-compose</link>
            <guid isPermaLink="false">run-redis-with-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[자주 사용하는 Docker Compose CLI 명령어]]></title>
            <description><![CDATA[docker-compose로 시작하는 명령어는 더 이상 업데이트를 지원하지 않는 Docker Compose의 v1 명령어이므로 되도록이면 사용하지 말자. v2부터는 docker compose로 시작하는 명령어를 사용한다. 아래 명령어들은 compose]]></description>
            <link>https://www.jscode.kr/blog/often-used-docker-compose-cli-command</link>
            <guid isPermaLink="false">often-used-docker-compose-cli-command</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[COPY : 파일 복사(이동)]]></title>
            <description><![CDATA[✅ 의미 COPY는 호스트 컴퓨터에 있는 파일을 복사해서 컨테이너로 전달한다. ✅ 사용법 # 문법
COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로]

# 예시
COPY app.txt /app.txt 🎯 파일 복]]></description>
            <link>https://www.jscode.kr/blog/dockerfile-copy</link>
            <guid isPermaLink="false">dockerfile-copy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[FROM : 베이스 이미지 생성 ]]></title>
            <description><![CDATA[✅ 의미 FROM은 베이스 이미지를 생성하는 역할을 한다. Docker 컨테이너를 특정 초기 이미지를 기반으로 추가적인 셋팅을 할 수 있다. 여기서 얘기한 ‘특정 초기 이미지’가 곧 베이스 이미지이다. 조금 더 쉽게 설명해보겠다. 우리가 윈도우 컴퓨터]]></description>
            <link>https://www.jscode.kr/blog/dockerfile-from</link>
            <guid isPermaLink="false">dockerfile-from</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기 ]]></title>
            <description><![CDATA[✅ 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기 Nest.js 프로젝트 만들기 Dockerfile 작성하기 .dockerignore 작성하기 Dockerfile을 바탕으로 이미지 빌드하기 이미지가 잘 생성됐는 지 확인하기 생성한 이미지를]]></description>
            <link>https://www.jscode.kr/blog/practice-for-running-nestjs-with-docker</link>
            <guid isPermaLink="false">practice-for-running-nestjs-with-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 이미지(Image) 다운로드]]></title>
            <description><![CDATA[✅ 이미지 다운로드 [최신 버전(latest) 이미지 다운로드] # docker pull 이미지명
$ docker pull nginx # docker pull nginx:latest와 동일하게 작동 이미지를 다운로드 할 때 Dockerhub이라는 곳에]]></description>
            <link>https://www.jscode.kr/blog/download-docker-image</link>
            <guid isPermaLink="false">download-docker-image</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker CLI ↔ Docker Compose 쉽게 작성하기]]></title>
            <description><![CDATA[지금까지의 예제를 보면 Docker CLI로 작성할 수 있는 명령어는 전부 compose.yml 파일로 옮길 수 있다. 반대로 compose.yml에 작성한 모든 값은 Docker CLI로 나타낼 수 있다. 이를 편하게 변환해주는 사이트가 존재한다. ]]></description>
            <link>https://www.jscode.kr/blog/how-to-write-docker-compose-with-docker-cli</link>
            <guid isPermaLink="false">how-to-write-docker-compose-with-docker-cli</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker Compose로 프론트엔드(Next.js) 실행시키기]]></title>
            <description><![CDATA[✅ Docker Compose로 프론트엔드(Next.js) 실행시키기 Next.js 프로젝트 만들기 Dockerfile 작성하기 .dockerignore 작성하기 compose 파일 작성하기 compose 파일 실행시키기 compose 실행 현황 보기]]></description>
            <link>https://www.jscode.kr/blog/run-nextjs-with-docker-compose</link>
            <guid isPermaLink="false">run-nextjs-with-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker Compose로 백엔드(Spring Boot) 실행시키기]]></title>
            <description><![CDATA[✅ Docker Compose로 백엔드(Spring Boot) 실행시키기 프로젝트 셋팅 간단한 코드 작성 Dockerfile 작성하기 Spring Boot 프로젝트 빌드하기 compose 파일 작성하기 compose 파일 실행시키기 compose 실행]]></description>
            <link>https://www.jscode.kr/blog/run-springboot-with-docker-compose</link>
            <guid isPermaLink="false">run-springboot-with-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Spring Boot, MySQL, Redis 컨테이너 동시에 띄워보기]]></title>
            <description><![CDATA[✅ 1. Spring Boot 프로젝트에 Redis 연결 코드 추가하기 build.gradle ...

dependencies {
	...
	implementation 'org.springframework.boot:spring-boot-starter-]]></description>
            <link>https://www.jscode.kr/blog/run-spring-boot-and-mysql-and-redis-together</link>
            <guid isPermaLink="false">run-spring-boot-and-mysql-and-redis-together</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker로 MySQL 실행시켜보기 - 2 ]]></title>
            <description><![CDATA[✅ MySQL 컨테이너에 직접 접속해보기 MySQL 컨테이너에 접속 컨테이너에서 MySQL에 접근하기 MySQL 접근에 성공했다면 데이터베이스 조회해보기 데이터베이스 만들기 컨테이너 종료 후 다시 생성해보기 위 방식은 볼륨(Volume)을 활용하지 않]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-with-docker-2</link>
            <guid isPermaLink="false">run-mysql-with-docker-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker로 MongoDB 실행시켜보기]]></title>
            <description><![CDATA[✅ Docker로 MongoDB 실행시켜보기 MongoDB 이미지를 바탕으로 컨테이너 실행시키기 컨테이너가 잘 실행되고 있는 지 체크 컨테이너 실행시킬 때 에러 없이 잘 실행됐는 지 로그 체크 MongoDB 컨테이너에 접속 컨테이너에서 MongoDB에]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-with-mongodb</link>
            <guid isPermaLink="false">run-mysql-with-mongodb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker Compose로 백엔드(Nest.js) 실행시키기]]></title>
            <description><![CDATA[✅ Docker Compose로 백엔드(Nest.js) 실행시키기 Nest.js 프로젝트 만들기 Dockerfile 작성하기 .dockerignore 작성하기 compose 파일 작성하기 compose 파일 실행시키기 compose 실행 현황 보기 l]]></description>
            <link>https://www.jscode.kr/blog/run-nestjs-with-docker-compose</link>
            <guid isPermaLink="false">run-nestjs-with-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RUN : 이미지를 생성하는 과정에서 사용할 명령문 실행 ]]></title>
            <description><![CDATA[✅ 의미 RUN은 이미지 생성 과정에서 명령어를 실행시켜야 할 때 사용한다. ✅ 사용법 # 문법
RUN [명령문]

# 예시
RUN npm install ✅ RUN vs ENTRYPOINT RUN 명령어와 ENTRYPOINT 명령어가 헷갈릴 때가 있다]]></description>
            <link>https://www.jscode.kr/blog/dockerfile-run</link>
            <guid isPermaLink="false">dockerfile-run</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker Compose를 사용하는 이유]]></title>
            <description><![CDATA[✅ Docker Copmose란? 여러 개의 Docker 컨테이너들을 하나의 서비스로 정의하고 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴이다. ✅ Docker Compose를 사용하는 이유 여러 개의 컨테이너를 관리하는 데 용이 복잡한 명령어]]></description>
            <link>https://www.jscode.kr/blog/why-use-docker-compose</link>
            <guid isPermaLink="false">why-use-docker-compose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[WORKDIR : 작업 디렉토리를 지정 ]]></title>
            <description><![CDATA[✅ 의미 WORKDIR으로 작업 디렉터리를 전환하면 그 이후에 등장하는 모든 RUN, CMD, ENTRYPOINT, COPY, ADD 명령문은 해당 디렉터리를 기준으로 실행된다. 작업 디렉터리를 굳이 지정해주는 이유는 컨테이너 내부의 폴더를 깔끔하게 ]]></description>
            <link>https://www.jscode.kr/blog/dockerfile-workdir</link>
            <guid isPermaLink="false">dockerfile-workdir</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 컨테이너(Container) 생성 / 실행 - 2]]></title>
            <description><![CDATA[✅ 컨테이너 생성 + 실행 이미지를 바탕으로 컨테이너를 생성한 뒤, 컨테이너를 실행까지 시킨다. 
(처음에 이미지를 바탕으로 컨테이너를 실행시키고 싶을 때, 이 명령어를 자주 사용한다.) # docker run 이미지명[:태그명]
$ docker ru]]></description>
            <link>https://www.jscode.kr/blog/create-docker-container-2</link>
            <guid isPermaLink="false">create-docker-container-2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EXPOSE : 컨테이너 내부에서 사용 중인 포트를 문서화하기 ]]></title>
            <description><![CDATA[✅ 의미 EXPOSE는 컨테이너 내부에서 어떤 포트에 프로그램이 실행되는 지를 문서화하는 역할만 한다. docker -p 8080:8080 … 와 같은 명령어의 -p 옵션과 같은 역할은 일체 하지 않는다. 쉽게 표현하자면 EXPOSE 명령어는 쓰나 안]]></description>
            <link>https://www.jscode.kr/blog/dockerfile-expose</link>
            <guid isPermaLink="false">dockerfile-expose</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 웹 프론트엔드 프로젝트(HTML, CSS,  Nginx)를 Docker로 배포하기 ]]></title>
            <description><![CDATA[✅ 웹 프론트엔드 프로젝트(HTML, CSS, Nginx)를 Docker로 배포하기 HTML, CSS 파일 만들기 Dockerfile 작성하기 Dockerfile을 바탕으로 이미지 빌드하기 이미지가 잘 생성됐는 지 확인하기 생성한 이미지를 컨테이너로 ]]></description>
            <link>https://www.jscode.kr/blog/practice-for-running-html-with-docker</link>
            <guid isPermaLink="false">practice-for-running-html-with-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker로 Redis 실행시켜보기 ]]></title>
            <description><![CDATA[✅ Docker로 Redis 실행시켜보기 Redis 이미지를 바탕으로 컨테이너 실행시키기 다운로드 된 이미지 확인하기 컨테이너가 잘 실행되고 있는 지 체크 컨테이너 실행시킬 때 에러 없이 잘 실행됐는 지 로그 체크 Redis 컨테이너에 접속 컨테이너에]]></description>
            <link>https://www.jscode.kr/blog/run-redis-with-docker</link>
            <guid isPermaLink="false">run-redis-with-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker로 MySQL 실행시켜보기 - 3]]></title>
            <description><![CDATA[✅ 볼륨(Volume)을 활용해 MySQL 컨테이너 띄우기 MySQL 컨테이너 띄우기 pwd 명령어로 볼륨으로 사용하고자 하는 경로를 확인한 뒤 입력해주자. 주의) mysql_data 디렉토리를 미리 만들어 놓으면 안 된다. 그래야 처음 이미지를 실행]]></description>
            <link>https://www.jscode.kr/blog/run-mysql-with-docker-3</link>
            <guid isPermaLink="false">run-mysql-with-docker-3</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:46:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Docker 전체 흐름 느껴보기 (Nginx 설치 및 실행) ]]></title>
            <description><![CDATA[✅ Docker를 조작하려면? 터미널에서 명령어(CLI)를 통해 Docker를 조작한다. ✅ 혹시나 Nginx가 뭔지 모르는 분들을 위해 Nginx란 여러 기능을 가진 서버 중 하나이다. 웹 서버 (HTML 웹 페이지를 렌더링 시키는 역할) 로드 밸런]]></description>
            <link>https://www.jscode.kr/blog/docker-flow-with-installing-nginx</link>
            <guid isPermaLink="false">docker-flow-with-installing-nginx</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:31:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker 설치 (Windows, Mac OS)]]></title>
            <description><![CDATA[✅ Docker 설치 (윈도우) [참고] WSL2가 설치되어 있어야 Docker Desktop이 정상 작동함. ✅ Docker 설치 (Mac OS) ✅ 체크 사항 2023년 7월부터 Docker Compose V1의 업데이트를 중단했다. 따라서 Doc]]></description>
            <link>https://www.jscode.kr/blog/docker-install</link>
            <guid isPermaLink="false">docker-install</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:31:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker란 ? / 컨테이너(Container)란? / 이미지(Image)란?]]></title>
            <description><![CDATA[✅ Docker란 ? 컨테이너를 사용하여 각각의 프로그램을 분리된 환경에서 실행 및 관리할 수 있는 툴이다. Docker의 정의를 보더라도 한 번에 와닿지 않을 것이다. 당연하다. Docker가 어떤 툴인지는 직접 사용해보고 경험해봐야 느낄 수 있다.]]></description>
            <link>https://www.jscode.kr/blog/what-is-docker</link>
            <guid isPermaLink="false">what-is-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:31:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Docker를 왜 배우는 걸까? ]]></title>
            <description><![CDATA[✅ 현업에서는 Docker를 왜 이렇게 많이 쓰는 걸까? Docker를 쓰는 이유에는 여러가지 장점이 있지만 그 중에서 핵심 장점 딱 1가지만 기억하자. 이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성 이 핵심 장점을]]></description>
            <link>https://www.jscode.kr/blog/why-learn-docker</link>
            <guid isPermaLink="false">why-learn-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 09:31:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 컨테이너 기반 + 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Nest.js)]]></title>
            <description><![CDATA[✅ Github Actions 코드 수정하기 .github/workflows/deploy.yml name: Deploy To EC2

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-container-scalable-project-nestjs</link>
            <guid isPermaLink="false">ci-cd-for-container-scalable-project-nestjs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:19:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Case 1 - Next.js 프로젝트에 CI/CD 적용하기 (Vercel) ]]></title>
            <description><![CDATA[✅ 전체적인 흐름 ✅ 1. Next.js 프로젝트 생성 $ npx create-next-app@latest ✅ 2. Vercel에 배포하기 Vercel에 배포하는 방법은 크게 어렵지 않다. 뿐만 아니라 Vercel 자체적으로 기본적인 CI/CD가 이미]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-nextjs-vercel</link>
            <guid isPermaLink="false">ci-cd-for-nextjs-vercel</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:19:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Case 2 - 일반 웹 프로젝트 구조에 CI/CD 적용하기 (S3, Cloudfront) ]]></title>
            <description><![CDATA[✅ 전체적인 흐름 ✅ 1. 간단한 웹 프로젝트 생성 index.html <h1>Hello World!</h1> style.css * {
  margin: 10px;
} ✅ 2. Github Repository 만들고 올리기 ✅ 3. S3 셋팅, 웹 호]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-web-project-s3-cloudfront</link>
            <guid isPermaLink="false">ci-cd-for-web-project-s3-cloudfront</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:19:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 컨테이너 기반의 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Nest.jS)]]></title>
            <description><![CDATA[✅ 이전 실습했던 내용 정리 서버 종료 프로젝트 폴더 삭제 ✅ 1. Docker 기반으로 프로젝트 수정하기 Dockerfile 작성하기 .dockerignore 파일 생성 ✅ 2. EC2가 Private ECR에 접근할 수 있게 셋팅하기 1. Amaz]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-container-project-nestjs</link>
            <guid isPermaLink="false">ci-cd-for-container-project-nestjs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:18:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 컨테이너 기반 + 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Spring Boot)]]></title>
            <description><![CDATA[✅ Github Actions 코드 수정하기 .github/workflows/deploy.yml name: Deploy To EC2

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-container-scalable-project-spring-boot</link>
            <guid isPermaLink="false">ci-cd-for-container-scalable-project-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:18:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 컨테이너 기반의 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Spring Boot)]]></title>
            <description><![CDATA[✅ 이전 실습했던 내용 정리 서버 종료 프로젝트 폴더 삭제 ✅ 1. Docker 기반으로 프로젝트 수정하기 Dockerfile 작성하기 ✅ 2. EC2가 Private ECR에 접근할 수 있게 셋팅하기 1. Amazon ECR Docker Creden]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-container-project-spring-boot</link>
            <guid isPermaLink="false">ci-cd-for-container-project-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:18:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[방법 5 - 컨테이너 기반 + 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Docker, CodeDeploy) ]]></title>
            <description><![CDATA[✅ 전체적인 흐름 ✅ 장점 컨테이너 기반의 서버가 여러 대이더라도 쉽게 자동 배포를 구축할 수 있다. 쉽게 무중단 배포를 적용시킬 수 있다. ✅ 단점 CodeDeploy를 사용함으로써 인프라 구조가 복잡해졌다. 구조가 복잡해짐에 따라 관리 비용, 유지]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-container-scalable-projects-docker-codedeploy</link>
            <guid isPermaLink="false">ci-cd-for-container-scalable-projects-docker-codedeploy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:18:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[방법 4 - 컨테이너 기반의 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Docker)]]></title>
            <description><![CDATA[✅ 전체적인 흐름 ✅ 장점 Docker 기반으로 서비스를 운영할 때, 가장 간단하게 구성할 수 있는 인프라 구조이다. ✅ 단점 무중단 배포를 구현하거나 여러 EC2 인스턴스에 배포를 해야 하는 상황이라면, 직접 Github Actions에 스크립트를 ]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-container-projects-with-docker</link>
            <guid isPermaLink="false">ci-cd-for-container-projects-with-docker</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] EC2에 Docker 설치, ECR 셋팅하기]]></title>
            <description><![CDATA[✅ 1. Ubuntu에서 Docker, Docker Compose 설치하기 $ sudo apt-get update && \
	sudo apt-get install -y apt-transport-https ca-certificates curl softw]]></description>
            <link>https://www.jscode.kr/blog/install-docker-in-ec2-and-setup-ecr</link>
            <guid isPermaLink="false">install-docker-in-ec2-and-setup-ecr</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:12:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Spring Boot)]]></title>
            <description><![CDATA[✅ 이전 실습했던 내용 정리 서버 종료 프로젝트 폴더 삭제 ✅ 1. appspec.yml, 스크립트 파일 작성하기 appspec.yml은 CodeDeploy가 실행될 때 필수적으로 존재해야 하는 파일이다. CodeDeploy는 이 설정 파일을 기반으로]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-scalable-project-spring-boot</link>
            <guid isPermaLink="false">ci-cd-for-scalable-project-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:11:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] CodeDeploy 셋팅 / IAM 설정 ]]></title>
            <description><![CDATA[✅ 1. CodeDeploy 역할(Role) 생성하기 Code Deploy가 다른 AWS Resource에 접근하려면 권한이 필요하다. 그 권한을 부여해주는 기능이 IAM의 역할(Role)이다. ✅ 2. CodeDeploy 생성하기 CodeDeploy]]></description>
            <link>https://www.jscode.kr/blog/codedeploy-setup-and-iam-configuration</link>
            <guid isPermaLink="false">codedeploy-setup-and-iam-configuration</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:10:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[방법 3 - 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Code Deploy) ]]></title>
            <description><![CDATA[✅ 전체적인 흐름 ✅ CodeDeploy를 사용하는 이유 CodeDeploy는 수많은 AWS EC2에 배포를 쉽게 할 수 있도록 도와준다. CodeDeploy에 무중단 배포 기능이 내재되어 있어 손쉽게 무중단 배포를 진행할 수 있다. 이 외에도 다양한]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-scalable-projects-codedeploy</link>
            <guid isPermaLink="false">ci-cd-for-scalable-projects-codedeploy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:10:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Nest.js)]]></title>
            <description><![CDATA[✅ 이전 실습했던 내용 정리 서버 종료 프로젝트 폴더 삭제 ✅ Github Actions 코드 수정 name: Deploy To EC2

on:
  push:
    branches:
      - main

jobs:
  deploy:
    run]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-standard-project-nestjs</link>
            <guid isPermaLink="false">ci-cd-for-standard-project-nestjs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:10:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 확장성을 고려한 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Nest.js)]]></title>
            <description><![CDATA[✅ 이전 실습했던 내용 정리 서버 종료 프로젝트 폴더 삭제 ✅ 1. appspec.yml, 스크립트 파일 작성하기 appspec.yml은 CodeDeploy가 실행될 때 필수적으로 존재해야 하는 파일이다. CodeDeploy는 이 설정 파일을 기반으로]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-scalable-project-nestjs</link>
            <guid isPermaLink="false">ci-cd-for-scalable-project-nestjs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:10:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[참고] CodeDeploy 로그 확인하는 방법 ]]></title>
            <link>https://www.jscode.kr/blog/how-to-check-codedeploy-logs</link>
            <guid isPermaLink="false">how-to-check-codedeploy-logs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:10:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Spring Boot)]]></title>
            <description><![CDATA[✅ 이전 실습했던 내용 정리 서버 종료 프로젝트 폴더 삭제 ✅ Github Actions 코드 수정 name: Deploy To EC2

on:
  push:
    branches:
      - main

jobs:
  deploy:
    run]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-standard-project-spring-boot</link>
            <guid isPermaLink="false">ci-cd-for-standard-project-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:08:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[방법 2 - 일반 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Github Actions, SCP)]]></title>
            <description><![CDATA[✅ 전체적인 흐름 ✅ 장점 빌드 작업을 Github Actions에서 하기 때문에 운영하고 있는 서버의 성능에 영향을 거의 주지 않는다. CI/CD 툴로 Github Actions만 사용하기 때문에 인프라 구조가 복잡하지 않고 간단하다. ✅ 단점 무중]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-standard-projects-with-github-actions-scp</link>
            <guid isPermaLink="false">ci-cd-for-standard-projects-with-github-actions-scp</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Nest.js)]]></title>
            <description><![CDATA[✅ 1. Nest.js 프로젝트 셋팅 # nest new {프로젝트명}
$ nest new instagram-server ✅ 2. Github에 프로젝트 올리기 Github에서 Repository 만들기 Github Repository에 프로젝트 코드]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-personal-project-nestjs</link>
            <guid isPermaLink="false">ci-cd-for-personal-project-nestjs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:07:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Spring Boot)]]></title>
            <description><![CDATA[✅ 1. Spring Boot 프로젝트 셋팅 프로젝트 셋팅 간단한 코드 작성 ✅ 2. Github에 프로젝트 올리기 Github에서 Repository 만들기 Github Repository에 프로젝트 코드 올리기 ✅ 3. EC2에 들어가서 기본 환경]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-personal-project-spring-boot</link>
            <guid isPermaLink="false">ci-cd-for-personal-project-spring-boot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:06:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[방법 1 - 개인 프로젝트에서 많이 쓰는 CI/CD 구축 방법 (Github Actions)]]></title>
            <description><![CDATA[✅ 전체적인 흐름 ✅ 장점 git pull을 활용해서 변경된 부분의 프로젝트 코드에 대해서만 업데이트 하기 때문에 CI/CD 속도가 빠르다. CI/CD 툴로 Github Actions만 사용하기 때문에 인프라 구조가 복잡하지 않고 간단하다. ✅ 단점 ]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-for-personal-projects</link>
            <guid isPermaLink="false">ci-cd-for-personal-projects</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 11:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] Github Actions 기본 문법 정리 ]]></title>
            <description><![CDATA[✅ 처음으로 Github Actions 작동시켜보기 새로운 프로젝트 폴더 만들기 .github/workflows/deploy.yml 만들기 Github Repository 만들어서 업로드하기 ✅ Github Actions 전체 구조 확인하기]]></description>
            <link>https://www.jscode.kr/blog/github-actions-basic-syntax</link>
            <guid isPermaLink="false">github-actions-basic-syntax</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 10:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Github Actions를 활용한 전체적인 CI/CD 흐름]]></title>
            <description><![CDATA[✅ CI/CD 흐름을 이해하기 위한 Github Actions 개념 정리 Github Actions를 로직을 실행시킬 수 있는 일종의 컴퓨터라고 생각하면 된다. CI/CD 과정에서 Github Actions는 “빌드, 테스트, 배포”에 대한 로직을 실]]></description>
            <link>https://www.jscode.kr/blog/ci-cd-flow-using-github-actions</link>
            <guid isPermaLink="false">ci-cd-flow-using-github-actions</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 10:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CI/CD 구축할 때 사용할 Github Actions]]></title>
            <description><![CDATA[✅ CI/CD를 구축할 때 사용할 툴 CI/CD를 구축할 수 있는 툴에는 여러가지가 있다. Github Actions Jenkins Circle CI Travis CI 등등 이 중에서 현업에서도 많이 사용하면서, 무료로 사용할 수 있고, 빌드용 서버가]]></description>
            <link>https://www.jscode.kr/blog/github-actions-when-ci-cd</link>
            <guid isPermaLink="false">github-actions-when-ci-cd</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 10:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[CI/CD를 왜 배우는 걸까?]]></title>
            <description><![CDATA[✅ CI/CD란? CI/CD란 Continuous Integration, Continuous Deployment라는 의미를 가지고 있다. 말이 너무 어렵다. 쉽게 표현하자면 CI/CD는 테스트(Test), 통합(Merge), 배포(Deploy)의 과정]]></description>
            <link>https://www.jscode.kr/blog/why-learn-ci-cd</link>
            <guid isPermaLink="false">why-learn-ci-cd</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 10:57:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 혹시나 비용 나가지 않는 지 체크하는 방법]]></title>
            <description><![CDATA[✅ 어떤 서비스에서 요금이 나왔는지 확인 방법]]></description>
            <link>https://www.jscode.kr/blog/how-to-check-aws-costs</link>
            <guid isPermaLink="false">how-to-check-aws-costs</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 사용 중인 Public IPv4 확인하는 방법]]></title>
            <description><![CDATA[✅ [보충 강의] Public IPv4 비용 추적 방법 VPC 서비스로 들어가기 VPC IP 주소 관리자 메뉴로 들어가기 리전 선택하기 IPAM 생성 페이지로 이동하기 IPAM 생성하기 사용중인 Public IPv4 확인하기]]></description>
            <link>https://www.jscode.kr/blog/check-current-public-ipv4</link>
            <guid isPermaLink="false">check-current-public-ipv4</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 4. 도메인 연결하기, HTTPS 적용하기]]></title>
            <description><![CDATA[✅ 1. ACM에서 SSL/TLS 인증서 발급받기 Cloudfront는 HTTPS를 적용하려면 인증서를 미국 동부(버지니아 북부)에서 발급받아야 한다. 발급받는 방법은 아래 강의 자료를 참고하자. Untitled ✅ 2. CloudFront 설정에서 ]]></description>
            <link>https://www.jscode.kr/blog/connect-domain-and-https-cloudfront</link>
            <guid isPermaLink="false">connect-domain-and-https-cloudfront</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[비용 나가지 않게 S3, CloudFront 깔끔하게 종료하기]]></title>
            <description><![CDATA[✅ 1. S3 종료하기 Untitled ✅ 2. CloudFront 종료하기 CloudFront 비활성화하기 CloudFront 삭제하기]]></description>
            <link>https://www.jscode.kr/blog/stop-s3-cloudfront-without-cost</link>
            <guid isPermaLink="false">stop-s3-cloudfront-without-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:01:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 4. RDS에 접속하기]]></title>
            <description><![CDATA[DBeaver를 기준으로 RDS에 접속하는 방법을 보여줄 예정이지만, Workbench를 써도 되고 Datagrip을 써도 상관없다. DB 관리 툴 중에 어떤 걸 써야 할 지 고민인 사람이라면, 최근 트렌드, 대중성 및 편리성을 고려했을 때 Datag]]></description>
            <link>https://www.jscode.kr/blog/connect-to-rds</link>
            <guid isPermaLink="false">connect-to-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] Nginx, Certbot을 활용해 HTTPS 연결하기 ]]></title>
            <description><![CDATA[Nginx에 대한 수업이 아니므로 Nginx에 대한 자세한 설명은 생략한다. ✅ 0. 사전 환경 셋팅하기 Untitled Untitled Untitled Untitled Untitled Untitled Untitled Untitled Untitled ]]></description>
            <link>https://www.jscode.kr/blog/https-with-nginx-and-certbot</link>
            <guid isPermaLink="false">https-with-nginx-and-certbot</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 4. ELB에 도메인 연결하기]]></title>
            <description><![CDATA[✅ 1. Route 53에서 EC2에 연결되어 있던 레코드 삭제 ✅ 2. Route 53에서 ELB에 도메인 연결하기]]></description>
            <link>https://www.jscode.kr/blog/connect-domain-to-elb</link>
            <guid isPermaLink="false">connect-domain-to-elb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[비용 나가지 않게 RDS 깔끔하게 종료하기]]></title>
            <description><![CDATA[✅ RDS 데이터베이스 삭제하기 최종 스냅샷 생성과 자동 백업 보존을 체크하면 비용이 나간다. 따라서 실제 운영용 데이터베이스가 아니라면 체크를 해제하고 삭제를 하자. ]]></description>
            <link>https://www.jscode.kr/blog/stop-rds-without-cost</link>
            <guid isPermaLink="false">stop-rds-without-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 5. Express 서버에 RDS 연결하기]]></title>
            <description><![CDATA[리눅스와 Express에 대한 수업이 아니므로, 리눅스 명령어나 Express 코드에 대한 자세한 설명은 생략한다. ✅ 1. EC2 인스턴스에서 Express 서버 clone하기 $ git clone https://github.com/JSCODE-ED]]></description>
            <link>https://www.jscode.kr/blog/connect-express-to-rds</link>
            <guid isPermaLink="false">connect-express-to-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 3-2. S3를 활용해 Spring Boot 서버에 이미지 업로드 기능 구현하기]]></title>
            <description><![CDATA[리눅스와 Spring Boot에 대한 수업이 아니므로, 리눅스 명령어나 Spring Boot 코드에 대한 자세한 설명은 생략한다. ✅ 1. EC2 인스턴스에서 Spring Boot 서버 clone하기 $ git clone https://github.c]]></description>
            <link>https://www.jscode.kr/blog/springboot-s3-image-upload</link>
            <guid isPermaLink="false">springboot-s3-image-upload</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 5-2. Spring Boot 서버에 RDS 연결하기]]></title>
            <description><![CDATA[리눅스와 Spring Boot에 대한 수업이 아니므로, 리눅스 명령어나 Spring Boot 코드에 대한 자세한 설명은 생략한다. ✅ 1. EC2 인스턴스에서 Spring Boot 서버 clone하기 $ git clone https://github.c]]></description>
            <link>https://www.jscode.kr/blog/connect-springboot-to-rds</link>
            <guid isPermaLink="false">connect-springboot-to-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2. 보안그룹 설정하기]]></title>
            <description><![CDATA[✅ 1. 보안그룹 생성하기 보안 그룹에 대해 잘 기억나지 않는다면 아래 링크로 돌아가 복습하고 오자. 
Untitled 1.1. ‘AWS EC2 - 보안 그룹’ 메뉴 선택 1.2. 인바운드 규칙, 아웃바운드 규칙 설정하기 별도의 설정을 하지 않았다면 ]]></description>
            <link>https://www.jscode.kr/blog/rds-security-group-setup</link>
            <guid isPermaLink="false">rds-security-group-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 3. ELB 셋팅하기 - 리스너 및 라우팅 / 헬스 체크]]></title>
            <description><![CDATA[✅ 1. 대상 그룹(Target Group) 설정하기 리스너 및 라우팅 설정은 ELB로 들어온 요청을 어떤 EC2 인스턴스에 전달할 건지를 설정하는 부분이다. 1. 2. 대상 유형 선택하기 3. 프토토콜, IP 주소 유형, 프로토콜 버전 설정 4. 상]]></description>
            <link>https://www.jscode.kr/blog/elb-setup-listeners-routing-healthcheck</link>
            <guid isPermaLink="false">elb-setup-listeners-routing-healthcheck</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RDS를 활용한 아키텍처 구성]]></title>
            <description><![CDATA[✅ RDS를 활용한 아키텍처 구성]]></description>
            <link>https://www.jscode.kr/blog/rds-architecture-overview</link>
            <guid isPermaLink="false">rds-architecture-overview</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2. S3에 파일 업로드 할 수 있도록 IAM에서 액세스 키 발급받기]]></title>
            <description><![CDATA[✅ 목표 기본적으로 AWS의 리소스에 아무나 접근을 못하게 막아놨기 때문에 S3에 접근해서 파일을 업로드할 수가 없다. 하지만 백엔드 서버가 S3에 접근해서 파일을 업로드할 수 있어야 한다. S3에 접근할 수 있는 권한을 받기 위해 IAM이라는 곳에서]]></description>
            <link>https://www.jscode.kr/blog/issue-iam-access-key-for-s3-upload</link>
            <guid isPermaLink="false">issue-iam-access-key-for-s3-upload</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[웹 서비스를 배포할 때 사용하는 S3, CloudFront]]></title>
            <description><![CDATA[✅ S3는 ‘파일 저장 서비스’이지 않나? 이전 강의에서 S3는 파일 저장 서비스라고 표현했다. 사실 S3는 파일 저장 이외에도 부가적인 기능을 가지고 있다. 그 중 하나가 ‘정적 웹 사이트 호스팅’ 기능이다. 쉽게 표현하자면 웹 서비스를 다른 사용자]]></description>
            <link>https://www.jscode.kr/blog/s3-cloudfront-for-web-deploy</link>
            <guid isPermaLink="false">s3-cloudfront-for-web-deploy</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2. S3에 업로드하기 / 웹 호스팅 설정하기]]></title>
            <description><![CDATA[✅ 1. S3에 배포할 웹 서비스 파일 업로드하기 index.html <h1>Title</h1> ✅ 2. S3에 정적 웹 사이트 호스팅 설정하기 ✅ 3. 잘 배포됐는 지 체크하기]]></description>
            <link>https://www.jscode.kr/blog/s3-upload-and-static-hosting-setup</link>
            <guid isPermaLink="false">s3-upload-and-static-hosting-setup</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 5. HTTPS 적용을 위해 인증서 발급받기]]></title>
            <description><![CDATA[HTTPS를 적용하기 위해서는 인증서를 발급받아야 한다. ✅ 1. AWS Certificate Manager 서비스로 들어가서 인증서 요청 버튼 누르기 ✅ 2. 인증서 요청하기 ✅ 3. 인증서 검증하기 내가 소유한 도메인이 맞는 지 검증하는 과정이다.]]></description>
            <link>https://www.jscode.kr/blog/issue-certificate-for-https</link>
            <guid isPermaLink="false">issue-certificate-for-https</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 3. 파라미터 그룹 추가하기]]></title>
            <description><![CDATA[✅ 파라미터 그룹 생성하기 1. 아래 속성 전부 utf8mb4로 설정하기 2. 아래 속성 전부 utf8mb4_unicode_ci로 설정하기 3. time_zone을 Asia/Seoul로 설정하기 ✅ RDS의 파라미터 그룹 변경하기 RDS의 DB 인스턴]]></description>
            <link>https://www.jscode.kr/blog/add-rds-parameter-group</link>
            <guid isPermaLink="false">add-rds-parameter-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[비용 나가지 않게 ELB 깔끔하게 종료하기]]></title>
            <description><![CDATA[✅ 비용 나가지 않게 ELB 깔끔하게 종료하기 생성한 ELB와 ELB에 연결한 EC2만 깔끔하게 정리하면 요금이 나가지 않는다. ELB 종료하기 EC2 종료하기]]></description>
            <link>https://www.jscode.kr/blog/stop-elb-without-cost</link>
            <guid isPermaLink="false">stop-elb-without-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 6. ELB에 HTTPS 설정하기]]></title>
            <description><![CDATA[✅ 1. ELB의 리스너 및 규칙 수정하기 HTTPS에 대한 리스너 추가하기 ✅ 2. HTTPS가 잘 적용됐는 지 확인하기 구매한 도메인에 https를 붙여서 접속해보자. ✅ 3. HTTP로 접속할 경우 HTTPS로 전환되도록 설정하기 아직까지 아쉬운]]></description>
            <link>https://www.jscode.kr/blog/setup-https-on-elb</link>
            <guid isPermaLink="false">setup-https-on-elb</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2. ELB 셋팅하기 - 보안그룹]]></title>
            <description><![CDATA[✅ 보안 그룹 AWS EC2 보안 그룹에서 보안 그룹 생성하기 ELB 만드는 창으로 돌아와서 보안 그룹 등록하기]]></description>
            <link>https://www.jscode.kr/blog/elb-setup-security-group</link>
            <guid isPermaLink="false">elb-setup-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 1. RDS 생성하기]]></title>
            <description><![CDATA[✅ 0. RDS 페이지 들어가기 ✅ 1. 리전 선택 ✅ 2. 데이터베이스 종류 선택 ✅ 3. 템플릿 선택 프리 티어를 선택하면 된다. 여기서 많이들 오해하는 게 프리 티어는 학습할 때나 테스트할 때만 쓰는 안 좋은 사양의 컴퓨터라고 생각한다. 하지만 ]]></description>
            <link>https://www.jscode.kr/blog/create-rds</link>
            <guid isPermaLink="false">create-rds</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 3. S3를 활용해 Express 서버에 이미지 업로드 기능 구현하기]]></title>
            <description><![CDATA[리눅스와 Express에 대한 수업이 아니므로, 리눅스 명령어나 Express 코드에 대한 자세한 설명은 생략한다. ✅ 1. EC2 인스턴스에서 Express 서버 clone하기 $ git clone https://github.com/JSCODE-ED]]></description>
            <link>https://www.jscode.kr/blog/express-s3-image-upload</link>
            <guid isPermaLink="false">express-s3-image-upload</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[S3란? / S3를 왜 사용하는걸까? / 현업에서 S3를 많이 사용할까?]]></title>
            <description><![CDATA[✅ S3란? 한 줄 요약 : 파일 저장 서비스이다. 우린 사진이나 동영상과 같은 파일들을 구글 드라이브나 iCloud에 저장한다. S3는 이런 종류의 서비스라고 생각하면 된다. ✅ S3를 왜 사용하는 걸까? 백엔드 서버를 구현하다보면 이미지 업로드 기]]></description>
            <link>https://www.jscode.kr/blog/what-is-s3</link>
            <guid isPermaLink="false">what-is-s3</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[S3, CloudFront를 활용한 아키텍처 구성]]></title>
            <link>https://www.jscode.kr/blog/s3-cloudfront-architecture-overview</link>
            <guid isPermaLink="false">s3-cloudfront-architecture-overview</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 3. CloudFront 생성하기]]></title>
            <description><![CDATA[✅ 1. CloudFront 페이지 들어가기 ✅ 2. 생성할 CloudFront 이름 설정 ✅ 3. 원본 도메인 설정 ✅ 4. WAF 설정 ✅ 5. CloudFront 생성하기 ✅ 6. 배포가 완료될 때까지 기다리기 아래의 화면은 아직까지 배포가 진행]]></description>
            <link>https://www.jscode.kr/blog/create-cloudfront</link>
            <guid isPermaLink="false">create-cloudfront</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ELB란? / TLS, SSL과 HTTPS]]></title>
            <description><![CDATA[✅ ELB(Elastic Load Balancer)란? 한 줄 요약 : 트래픽(부하)을 적절하게 분배해주는 장치이다. 트래픽(부하)를 적절하게 분배해주는 장치를 보고 전문적인 용어로 로드밸런서(Load Balancer)라고 부른다. 서버를 2대 이상 ]]></description>
            <link>https://www.jscode.kr/blog/what-is-elb-and-https-basics</link>
            <guid isPermaLink="false">what-is-elb-and-https-basics</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[RDS란? / RDS를 왜 사용하는걸까? / 현업에서의 RDS]]></title>
            <description><![CDATA[✅ RDS(Relational Database Service)란? 한 줄 요약 : 관계형 데이터베이스 서비스이다. MySQL, MariaDB 등 여러 관계형 데이터베이스 서비스를 AWS로부터 빌려서 사용하는 형태이다. ✅ RDS(Relational D]]></description>
            <link>https://www.jscode.kr/blog/what-is-rds-and-why-use</link>
            <guid isPermaLink="false">what-is-rds-and-why-use</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 1. ELB 셋팅하기 - 기본 구성]]></title>
            <description><![CDATA[✅ 1. 리전 선택하기 AWS EC2 로드밸런서 서비스로 들어가서 리전(Region)을 선택해야 한다. ✅ 2. 로드 밸런서 유형 선택하기 2.1. 로드 밸런서 생성하기 2.2. 로드 밸런서 유형 선택하기 3가지 로드 밸런서 유형 중 Applicati]]></description>
            <link>https://www.jscode.kr/blog/elb-setup-basic</link>
            <guid isPermaLink="false">elb-setup-basic</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] HTTPS 연결 시 ELB vs Nginx, Certbot]]></title>
            <description><![CDATA[✅ HTTPS 연결 시 ELB vs Nginx, Certbot HTTPS를 연결하는 방법을 검색해보면 ELB 뿐만 아니라 Nginx, Certbot을 활용하는 방법도 많이 나온다. 현업에서는 어떤 방법을 더 많이 사용할까? 현업에서는 ELB를 활용해서]]></description>
            <link>https://www.jscode.kr/blog/elb-vs-nginx-vertbot-for-https</link>
            <guid isPermaLink="false">elb-vs-nginx-vertbot-for-https</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 1. S3 버킷 셋팅하기]]></title>
            <description><![CDATA[✅ S3 버킷 셋팅하기 Untitled Untitled  ]]></description>
            <link>https://www.jscode.kr/blog/setup-s3-bucket-for-hosting</link>
            <guid isPermaLink="false">setup-s3-bucket-for-hosting</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[S3를 활용한 아키텍처 구성]]></title>
            <description><![CDATA[✅ 이미지 파일 업로드 과정 ✅ 이미지 파일 다운로드 과정 위 예시는 이미지 파일로 예를 들었으나, S3는 이미지 이외에도 다양한 종류의 파일을 저장하는 용도로 많이 사용한다. ]]></description>
            <link>https://www.jscode.kr/blog/s3-architecture-overview</link>
            <guid isPermaLink="false">s3-architecture-overview</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[ELB를 활용한 아키텍처 구성]]></title>
            <description><![CDATA[✅ ELB를 활용한 아키텍처 구성 ELB를 사용하기 전의 아키텍처는 사용자들이 EC2의 IP 주소 또는 도메인 주소에 직접 요청을 보내는 구조였다. 하지만 ELB를 추가적으로 도입함으로써 사용자들이 EC2에 직접적으로 요청을 보내지 않고 ELB를 향해]]></description>
            <link>https://www.jscode.kr/blog/elb-architecture-overview</link>
            <guid isPermaLink="false">elb-architecture-overview</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[비용 나가지 않게 S3 깔끔하게 종료하기]]></title>
            <description><![CDATA[✅ 비용 나가지 않게 S3 깔끔하게 종료하기 버킷 안에 있는 객체 전부 삭제하기 버킷 삭제하기]]></description>
            <link>https://www.jscode.kr/blog/stop-s3-without-cost</link>
            <guid isPermaLink="false">stop-s3-without-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 1. S3 버킷 생성하기]]></title>
            <description><![CDATA[✅ S3에서만 사용하는 용어 정리 S3에서는 버킷(Bucket)과 객체(Object)라는 용어를 사용한다. 이 용어에 대해 알아보자. 버킷(Bucket)이란?
⇒ 깃헙(Github)을 보면 여러 개의 Repository를 만들 수 있다. S3에서도 여]]></description>
            <link>https://www.jscode.kr/blog/create-s3-bucket</link>
            <guid isPermaLink="false">create-s3-bucket</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 04:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 무료로 도메인 구매하는 방법]]></title>
            <description><![CDATA[✅ 참고 자료 ✅ 주의 실제 운영할 서버에는 무료 도메인을 사용하지 말자. 무료 도메인은 생각보다 불안정하다. 중간에 도메인을 통한 접속이 끊기기도 한다. 즉, 서비스가 중단되는 경우가 발생할 수 있다는 뜻이다. ]]></description>
            <link>https://www.jscode.kr/blog/how-to-get-free-domain</link>
            <guid isPermaLink="false">how-to-get-free-domain</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:59:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 1. Route53에서 도메인 구매]]></title>
            <description><![CDATA[✅ Route 53에서 도메인 구매 ✅ 도메인 구매 잘 됐는 지 확인하기 [호스팅 영역] [등록된 도메인] 위와 같이 등록된 도메인은 도메인을 구매한 시점으로부터 10~20분 뒤에 등록된다. ]]></description>
            <link>https://www.jscode.kr/blog/buy-domain-in-route53</link>
            <guid isPermaLink="false">buy-domain-in-route53</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:59:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2. Route53의 도메인을 EC2에 연결하기]]></title>
            <description><![CDATA[✅ Route53의 도메인을 EC2에 연결하기 Route 53의 호스팅 영역 메뉴에 들어가서 레코드 생성 버튼 누르기 레코드 생성하기 잘 접속되는 지 확인하기 ✅ 레코드 유형 DNS에 공통적으로 있는 설정 중 하나가 레코드 유형이다. 많은 레코드 유형]]></description>
            <link>https://www.jscode.kr/blog/route53-connect-domain-to-ec2</link>
            <guid isPermaLink="false">route53-connect-domain-to-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:59:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Route 53이란? / DNS란? / 현업에서의 Route53 활용 여부]]></title>
            <description><![CDATA[✅ Route 53이란? 한 줄 요약 : 도메인을 발급하고 관리해주는 서비스이다. 혹시나 도메인(Domain)의 의미를 모르는 분들을 위해 설명드리자면, www.naver.com, daum.net, youtube.com과 같은 문자로 표현된 인터넷 주]]></description>
            <link>https://www.jscode.kr/blog/what-is-route53</link>
            <guid isPermaLink="false">what-is-route53</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:59:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[비용 나가지 않게 EC2 깔끔하게 종료하기]]></title>
            <description><![CDATA[✅ 1. EC2 인스턴스 종료하기 ✅ 2. 탄력적 IP 릴리스하기]]></description>
            <link>https://www.jscode.kr/blog/terminate-ec2-without-cost</link>
            <guid isPermaLink="false">terminate-ec2-without-cost</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] 7-2. ]]></title>
            <description><![CDATA[리눅스와 Spring Boot에 대한 수업이 아니므로, 리눅스 명령어나 Spring Boot 코드에 대한 자세한 설명은 생략한다. ✅ 1. Ubuntu 환경에서 JDK 설치하는 법 Spring Boot는 3.x.x 버전을 사용할 예정이고, JDK는 1]]></description>
            <link>https://www.jscode.kr/blog/deploy-spring-boot-server-to-ec2</link>
            <guid isPermaLink="false">deploy-spring-boot-server-to-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 7. Express 서버를 EC2에 배포하기]]></title>
            <description><![CDATA[리눅스와 Express에 대한 수업이 아니므로, 리눅스 명령어나 Express 코드에 대한 자세한 설명은 생략한다. ✅ 1. Ubuntu 환경에서 Node.js 설치하는 법 Ubuntu 환경에서 Express 서버를 실행시키려면 Node.js가 설치되]]></description>
            <link>https://www.jscode.kr/blog/deploy-express-server-to-ec2</link>
            <guid isPermaLink="false">deploy-express-server-to-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 4. EC2 셋팅하기 - 스토리지 구성]]></title>
            <description><![CDATA[✅ 스토리지 구성 우리가 쓰고 있는 노트북이나 데스크톱 컴퓨터는 전부 하드디스크를 가지고 있다. 하드디스크는 컴퓨터에서 파일을 저장하는 공간이다. EC2도 하나의 컴퓨터이다보니 여러 파일들을 저장할 저장 공간이 필요하다. 이 저장 공간을 보고 EBS(]]></description>
            <link>https://www.jscode.kr/blog/setup-ec2-storage</link>
            <guid isPermaLink="false">setup-ec2-storage</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[보충 강의] IP와 Port의 개념]]></title>
            <description><![CDATA[✅ IP의 개념 한 줄 요약 : 네트워크 상에서의 특정 컴퓨터를 가리키는 주소 아래와 같은 값이 IP 주소이다. 13.250.15.132 IP는 특정 컴퓨터의 주소를 가리킨다. 예를 들면, naver.com이라는 서비스도 IP 주소를 가지고 있다. 저]]></description>
            <link>https://www.jscode.kr/blog/what-is-ip-and-port</link>
            <guid isPermaLink="false">what-is-ip-and-port</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 5. EC2 접속하기]]></title>
            <description><![CDATA[✅ 생성된 인스턴스 정보 해석하기 세부 정보 보안 (보안 그룹) 네트워크 스토리지 상태 검사 모니터링 태그 ✅ EC2에 접속하기]]></description>
            <link>https://www.jscode.kr/blog/ec2-access</link>
            <guid isPermaLink="false">ec2-access</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 2. EC2 셋팅하기 - 기본 설정]]></title>
            <description><![CDATA[✅ 1. 이름 및 태그 EC2의 이름을 설정하는 곳이다. 이름을 지을 때는 이 컴퓨터가 어떤 역할을 하는 지 알아볼 수 있게 작성한다. ex) instagram-server ✅ 2. Application and OS Images (Amazon Mach]]></description>
            <link>https://www.jscode.kr/blog/setup-ec2-basic</link>
            <guid isPermaLink="false">setup-ec2-basic</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 3. EC2 셋팅하기 - 보안그룹 설정]]></title>
            <description><![CDATA[✅ 네트워크 설정 네트워크 설정 칸을 보면 VPC와 Security Groups(보안 그룹)가 보인다. 여기서 VPC라는 개념은 AWS를 입문하는 입장에서는 크게 중요하지 않으니 넘어가자. 나중에 AWS에 어느 정도 익숙해졌을 때 VPC를 학습하도록 ]]></description>
            <link>https://www.jscode.kr/blog/setup-ec2-security-group</link>
            <guid isPermaLink="false">setup-ec2-security-group</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 6. 탄력적 IP 연결하기]]></title>
            <description><![CDATA[✅ 탄력적 IP가 왜 필요할까? EC2 인스턴스를 생성하면 IP를 할당받는다. 하지만 이렇게 할당받은 IP는 임시적인 IP이다. EC2 인스턴스를 잠깐 중지시켰다가 다시 실행시켜보면 IP가 바뀌어있다. EC2 인스턴스를 중지시켰다가 다시 실행시킬 때마]]></description>
            <link>https://www.jscode.kr/blog/connect-elastic-ip</link>
            <guid isPermaLink="false">connect-elastic-ip</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[[실습] 1. 리전(Region) 선택하기]]></title>
            <description><![CDATA[✅ AWS EC2 서비스로 들어가서 리전(Region) 선택하기 AWS EC2를 시작하기 위해서는 우선적으로 리전(Region)을 먼저 선택해야 한다. ✅ 리전(Region)이란? 리전(Region)이란 인프라를 지리적으로 나누어 배포한 각각의 데이터]]></description>
            <link>https://www.jscode.kr/blog/choose-region</link>
            <guid isPermaLink="false">choose-region</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 03:52:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Vercel에 도메인 연결하기]]></title>
            <description><![CDATA[1. 도메인을 구매 필자는 이미 가비아(gabia)에서 도메인을 구매해놨다. 가비아(gabia)를 기준으로 도메인 연결하는 방법을 설명할 예정이다. 
(꼭 가비아에서 도메인을 구매할 필요는 없다. 다른 서비스에서 도메인을 구매하더라도 기능이 비슷하기 ]]></description>
            <link>https://www.jscode.kr/blog/setup-domain-in-vercel</link>
            <guid isPermaLink="false">setup-domain-in-vercel</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 01:36:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[배포(Deployment)란]]></title>
            <description><![CDATA[✅ 배포(Deployment)란? 개발자들은 “이제 기능 구현도 끝났고 테스트도 끝났으니 배포하자!"라는 말을 자주 한다. 여기서 배포란 무슨 뜻일까? 배포(Deployment)란 다른 사용자들이 인터넷을 통해서 사용할 수 있게 만드는 걸 의미한다. ]]></description>
            <link>https://www.jscode.kr/blog/what-is-deployment</link>
            <guid isPermaLink="false">what-is-deployment</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 00:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[EC2란? / EC2를 왜 배울까? / 현업에서 EC2는 주로 언제 쓸까? ]]></title>
            <description><![CDATA[✅ EC2(Elastic Compute Cloud)란? 한 줄 요약 : 컴퓨터를 빌려서 원격으로 접속해 사용하는 서비스이다. EC2를 쉽게 얘기하면 하나의 컴퓨터를 의미한다. ✅ EC2(Elastic Compute Cloud)를 왜 배울까? 서버를 배]]></description>
            <link>https://www.jscode.kr/blog/what-is-ec2</link>
            <guid isPermaLink="false">what-is-ec2</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 00:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Vercel이란? / Vercel 등장 배경]]></title>
            <description><![CDATA[정적 페이지와 동적 페이지의 차이를 알고 있다는 전제하에서 설명하겠다. Vercel의 등장 개발자라면 한 번쯤 자신만의 블로그를 만들어서 배포해본 사람들이 많다. Next.js가 유명해지기 전까지는 블로그를 정적 페이지로 배포하는 경우가 많았다. 많이]]></description>
            <link>https://www.jscode.kr/blog/what-is-vercel</link>
            <guid isPermaLink="false">what-is-vercel</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 00:47:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Vercel에 Next.js 웹 서비스 배포하기 ]]></title>
            <description><![CDATA[1. 회원가입 / 로그인하기 2. Github Repository에 프로젝트 올리기 3. Vercel에서 프로젝트 import 하기 Next.js 프로젝트에 있던 .env의 값을 Vercel의 Environment Variables 메뉴에 기입해줘야 ]]></description>
            <link>https://www.jscode.kr/blog/nextjs-deployment-by-vercel</link>
            <guid isPermaLink="false">nextjs-deployment-by-vercel</guid>
            <dc:creator><![CDATA[JSCODE 박재성]]></dc:creator>
            <pubDate>Sat, 29 Nov 2025 08:15:00 GMT</pubDate>
        </item>
    </channel>
</rss>