전체 글 132

Github, Jenkins, Docker를 활용한 CI/CD - 2

CI를 위한 pipeline 구성 젠킨스에서 하나의 CI/CD 프로젝트를 구축하기 위해서는 아이템(Item)을 생성하여야 한다.하나의 젠킨스 서버에 여러개의 아이템을 만들 수 있고 각각의 아이템들은 개발자가 설정하는 것에 따라 다르게 동작한다.젠킨스에서 아이템을 만드는 방법은 대표적으로 FreeStyle과 Pipeline이 존재한다.Freestyle장점웹 기반의 GUI를 통해 여러 플러그인을 쉽게 사용할 수 있다.단점:CI 파이프라인에 변경 사항을 만들기 위해서는 젠킨스에 로그인해 각각의 프리스타일 잡의 설정을 변경해야만 한다.CI/CD의 과정을 콘솔을 통해서만 확인할 수 있다.각각의 과정들을 한번에 보기 어렵다.Pipeline장점:파이프라인은 코드로 프로젝트 설정을 할 수 있어 프리스타일과 다르게 젠킨..

CI\CD 2025.05.17

Github, Jenkins, Docker를 활용한 CI/CD - 1

기본 세팅 github 토큰 발급Settings -> Developer settings -> Personal access tokens -> Tokens (classic) 필요한 권한 설정 후 생성 Docker 설치 Windows 11에 Docker Desktop 설치하기_2024.11목표Windows 11에 Docker Desktop 설치하기Docker 사용해보기 오랜만에 Docker설치하려고 하니 Docker 설치 UI가 바뀌어 2024.11.05 기준 다시 정리해보았습니다. 이번 정리에는 Docker 이미지 사용 예제도 함께herojoon-dev.tistory.com Docker 로 Jenkins 설치 docker로 jenkins 설치1. Jenkins를 Docker 이미지로 pulldock..

CI\CD 2025.05.17

docker로 jenkins 설치

1. Jenkins를 Docker 이미지로 pulldocker image pull jenkins/jenkins:jdk17 2. DockerfileFROM jenkins/jenkins:jdk17USER rootRUN apt-get update &&\ apt-get upgrade -y &&\ # 빌드가 완료된 프로젝트를 Jenkins(컨테이너) 외부의 서버에서 실행시켜야 하기 때문에 # ssh 를 통해 서버에 접속해 빌드된 프로젝트를 실행시키는 방법을 사용하기 위함 apt-get install -y openssh-client 3. docker-compose.ymlservices: jenkins: container_name: jenkins-container build: ..

CI\CD 2025.05.09

[Websocket] Redis pub/sub, WebSocket 기반 실시간 채팅 구현

1. RedisConfig RedisMessageListenerContainerRedis에서 발생하는 이벤트를 수신하는 리스너를 관리하는 빈 객체setConnectionFactory: Redis와의 연결을 담당하며 Redis 채널에서 들어오는 메시지를 수신하기 위해 사용한다RedisTemplateRedis 서버와의 데이터 전송 시 직렬화 및 역직렬화를 처리하고, Redis와의 상호작용을 담당한다Redis는 다양한 데이터 구조를 지원하지만, Java 객체를 Redis에 저장하려면 직렬화가 필요하다 Jackson2JsonRedisSerializerRedis에 저장되는 객체가 JSON 형태로 직렬화되고, Redis에서 가져온 데이터를 JSON으로 역직렬화할 수 있도록 설정한다. 2. WebsocketCon..

카테고리 없음 2025.05.08

[React] Vite 를 사용하여 React 설치 및 기본설정

1. npm create vite@latest : 리액트 파일 생성 명령어2. Y : 파일 생성 여부를 물어봄. y 입력 시 생성 진행3. 원하는 프로젝트 이름 입력, 키보드로 react선택, 키보드로 JS 선택4. 해당 폴더로 이동 npm i : package.json에 기록되어 있는 dependency 설치npm run dev → react 실행. index.html을 기준으로 실행됨http://localhost:5173/ : 해당 URL 접속 시 연결 확인 가능서버 종료 : 터미널 클릭 후 Ctrl + C main.html main.jsximport { StrictMode } from 'react'import { createRoot } from 'react-d..

FrontEnd 2025.04.26

docker란?, docker 사용방법

DockerDocker는 어플리케이션을 ‘컨테이너’라는 독립적인 환경에서 실행할 수 있도록 해주는 오픈 소스 플랫폼이다.어떤 앱이든 컨테이너 안에 넣어두면 어디서든 동일하게 실행될 수 있도록 해주는 도구라고 보면 된다.기본적으로 필요한 라이브러리, 설정, 종속성 등을 "컨테이너"로 패키징하므로 환경이 달라도 똑같이 동작하게 해준다. ✅ 이미지 (Image)컨테이너를 실행하기 위한 템플릿(실행 전의 정적인 스냅샷)애플리케이션, 라이브러리, 환경설정 등이 포함되어 있으며, 이 이미지를 바탕으로 컨테이너가 만들어진다 ✅ 컨테이너 (Container)이미지를 실행시켜 동작 중인 상태애플리케이션과 그 실행에 필요한 모든 파일, 라이브러리, 종속성 등을 포함한 격리된 실행 환경이 안에 들어 있는 앱은 외부 환경과..

CI\CD 2025.04.24

Filter, Spring Security

spring에서 모든 호출은 DispatcherServlet을 통과하게 되고 이후에 각 요청을 담당하는 Controller로 분배된다.이때, 각 요청에 대해서 공통적으로 처리해야 할 필요가 있을 때DispatcherServlet 이전에 단계가 필요하며 이 역할을 하는게 Filter다. Spring Security도 인증 및 인가를 위해 Filter를 사용하며, FilterChainProxy를 통해서 상세로직을 구현한다.Spring security에서 제공하는 인증방식: Form loginForm Login 기반 인증: 인증이 필요한 URL 요청 시 인증되지 않았다면 로그인 페이지를 반환하는 구조내부에서 인증을 처리할 때 가장 많이 사용되는 방식으로 usernamePasswordAuthenticationF..

CS 2025.04.23

[security] JWT와 Session의 차이

JWT (JSON Web Token)JWT는 JSON 포맷 형식으로 사용자 인증 정보를 담고 있는 토큰 기반 인증 방식이다.클라이언트 측에서 인증 정보를 유지하고, 요청 시 헤더 또는 쿠키에 포함시켜 서버에 전송한다.구조Header: 토큰의 타입(JWT ...)과 서명 알고리즘(암호화 알고리즘)Payload: 사용자 정보Signature헤더와 페이로드를 결합한 값을 서명 알고리즘을 통해 암호화하여 구현생성된 Signature를 JWT에서 받은 Signature와 비교하여 토큰의 변조 여부를 확인장점무상태성(Stateless): 서버가 사용자 상태를 유지할 필요가 없어 확장성에 유리하다분산 처리에 적합: 서버에 상태 정보를 저장하지 않기 때문에 여러 서버를 사용하여도 서버 간 세션 공유가 필요없다단점보안..

CS 2025.04.23

Claude 를 통한 MCP 구현

1. Claude Desktop 설치https://claude.ai/download 2. 회원가입 및 로그인 3. 좌측 상단의 줄 세개를 클릭 4. 파일 > 설정 탭을 클릭 5. 개발자 버튼 클릭 후, 설정 편집 클릭(화면이 조금 다를 수 있음) 6. 폴더가 열리며 claude_desktop_config.json 파일이 클릭되어 있을텐데, 해당 파일을 실행 7. 아직까지는 아무 값이 없으므로, 아래의 링크에서 필요한 기술의 소스코드 복사 (ex : firecrawl, jetbrains ...) GitHub - modelcontextprotocol/servers: Model Context Protocol ServersModel Context Protocol Servers. Contribute ..

웹 개발 종합 2025.04.19

[Spring] Spring AOP(Aspect-Oriented Programming)

핵심 기능(주관심사)과 공통 기능(보조 관심사, 부가기능)을 분리하여 코드의 재사용성, 유지보수성, 가독성을 향상시키는 방법 주 관심사 : 실제 로직 (ADD 함수 등)보조 관심사 : 보안, 로그, 트랜잭션 등 중간에 'Proxy' 객체를 두어, 보조관심사를 자동으로 끼워 넣는다. AOP 동작 흐름 (Spring AOP 기준)클라이언트가 메서드 호출 (예: ADD(x, y))Proxy 객체가 대신 호출을 가로챔보조관심사 로직 실행 (예: 로그 찍기, 트랜잭션 시작 등)실제 핵심 로직(ADD()) 실행결과를 기반으로 보조관심사 마무리 작업 (예: 트랜잭션 커밋, 로그 종료 등)클라이언트에게 결과 반환 주 사용 목적로깅 (Logging)메서드 실행 시점, 매개변수, 리턴 값 등을 기록보안 (Security..

Springboot 2025.04.16