전체 글 212

Spring Webocket을 이용한 실시간 채팅 구현(+ JWT 인증)

GitHub - yangwoohyeon/OAuth2_9oormthonUNIVContribute to yangwoohyeon/OAuth2_9oormthonUNIV development by creating an account on GitHub.github.com WebSocket이란?서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술로써, sns, 화상 채팅, 증권 거래 등에서 널리 사용되고 있다. 왜 WebSocket을 사용하는가? HTTP를 사용하여 실시간 양방향 통신을 구현하기 위해서는 다음과 같은 방법을 사용할 수 있다. 백엔드에서 변경 사항이 생길 때마다 프론트엔드에게 응답을 보내주는 방식 : Server-Sent-Eve..

BackEnd/spring 2025.05.14

Jenkins + Docker를 활용한 기본 CI/CD 파이프라인 구축

Jenkins와 Docker를 활용하여 CI/CD 파이프라인을 구축하는 과정을 공부했다. 사용되는 것1) 두개의 EC2서버JenkinsSpring 서버2) github webhook 3) jenkins-pipline 4) jenkinsFile 5) docker-compose CI/CD 흐름 1. GitHub에서 코드 푸시 GitHub Webhook → Jenkins로 알림 2. Jenkins Pipeline 실행 (CI 단계) Docker Image 빌드빌드된 이미지를 Docker Hub 저장소에 업로드DooD방식 사용3. Spring EC2 서버로 배포 (CD 단계)EC2에 SSH 접속하여 최신 이미지로 컨테이너 재배포 구현 방법 1. jenkinsfile 생성pipeline { agent any..

Spring Boot + Kafka + Docker로 비동기 메시징 구현하기

카프카(Kafka)란?카프카(Kafka)는 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼이다. Kafka 구성요소 Producer : Kafka에 이벤트를 Publish(게시)하는 클라이언트, topic에 데이터를 생성하고 전송하는 역할Consumer : 이벤트를 Subscribe(읽고 처리)하는 클라이언트, topic내부 파티션에 저장된 데이터를 가져오는 역할 Kafka에서는 Producer와 Consumer가 완전히 분리되어 있다.이는 Kafka의 높은 확장성을 위한 핵심 요소이다. Topic : 데이터가 들어갈 수 있는 공간을 이야기하며, 여러 개의 토픽이 생성될 수 있다.topic은 한개 이상의 파티션으로 구성되어 ..

Spring Boot 프로젝트를 AWS EC2에 Docker로 배포하기

1. 스프링 부트 프로젝트에 Dockerfile 생성 FROM openjdk:21-jdk-slim# JAR 파일 이름을 인자로 받음ARG JAR_FILE=build/libs/OAuth2_9oormthonUNIV-0.0.1-SNAPSHOT.jar# 컨테이너 내부에 app.jar로 복사COPY ${JAR_FILE} app.jar# 8080 포트 개방EXPOSE 8080# Spring Boot 실행ENTRYPOINT ["java", "-jar", "app.jar"] Dockerfile을 통해 Spring Boot 애플리케이션을 실행할 수 있는 Docker 이미지를 생성한다.🎯 이미지는 컨테이너를 실행하기 위한 실행 환경과 애플리케이션 코드, 필요한 설정, 의존성, 라이브러리 등을 모두 포함한 "설계도" 라고..

S3를 이용한 이미지 관리[SpringBoot]

프로젝트 구현 목표1. 제목, 내용, 이미지를 첨부하여 게시글 작성(Create) API 구현2. DB에는 제목, 내용, 이미지 URL 저장 3. 이미지는 S3에 저장 S3 버킷 생성 방법 관련 글 AWS S3 활용한 파일 및 이미지 업로드S3란 무엇인가?S3는 AWS에서 제공하는 '클라우드 스토리지 서비스'이다. 쉽게 말하면 AWS에서 제공하는 파일 저장 서비스이다. S3의 사용 용도이미지나 동영상 저장 및 제공정적 웹사이트 호스팅CDdeveloperwoohyeon.tistory.com Post 엔티티 생성@Entity@Data@Builder@AllArgsConstructor@NoArgsConstructorpublic class Post { @Id @GeneratedValue(str..

Docker Volume(도커 볼륨)

Docker Volume이란 무엇일까? 컨테이너는 기본적으로 임시적인 환경이라서 컨테이너가 종료되거나 삭제되면 그 안의 데이터도 함께 사라진다.도커 볼륨은 이러한 문제를 해결해주는 영구적인 데이터 저장 공간을 말한다. 볼륨(Volume)은 컨테이너 자체의 저장 공간을 사용하지 않고, 호스트 자체의 저장 공간을 공유해서 사용하는 형태이다. 도커 볼륨 사용 명령어docker run -v [호스트의 디렉토리 절대경로]:[컨테이너의 디렉토리 절대경로] [이미지명]:[태그명] 그럼 이제 도커 볼륨을 통해 MySQL을 사용해보자.  1. MySQL 컨테이너 띄우기 $ cd /Users/jaeseong/Documents/Develop$ mkdir docker-mysql # MySQL 데이터를 저장하고 싶은 폴더 만들..

Deployment/Docker 2025.03.23

Docker CLI

Docker를 사용하면서 많이 이용되는 CLI를 몇개 공부 했다. 도커 이미지 생성,삭제도커 컨테이너 생성,삭제로그 확인컨테이너 포트 연결 도커 이미지 다운로드# docker pull 이미지명$ docker pull nginx # docker pull nginx:latest와 동일하게 작동  특정 버전 도커 이미지 다운로드# docker pull 이미지명:태그명$ docker pull nginx:stable-perl 태그명은 도커허브에 들어가서 확인 가능하다. https://hub.docker.com/ Docker Hub Container Image Library | App ContainerizationIncrease your reach and adoption on Docker Hub With a Doc..

Deployment/Docker 2025.03.21

Docker를 활용하여 Nginx 설치 및 실행

1. Docker Hubd라은 이미지 저장소에서 nginx의 최신 이미지를 내 컴퓨터로 다운로드  2. 도커 이미지 목록을 확인하여 Nginx가 정삭적으로 다운로드 되었는지 확인 3. nginx 웹 서버를 실행하는 컨테이너를 webserver라는 이름으로 백그라운드에서 실행하고, 내 컴퓨터의 80포트와 연결  4. 현재 실행 중인 컨테이너 목록확인  크롬에서 잘 돌아가는 것을 확인할 수 있다.  5. 실행 중인 컨테이너를 멈추기

Deployment/Docker 2025.03.19

Docker란 무엇인가

도커란 무엇일까? 도커(Docker)는 컨테이너 기반 가상화 플랫폼으로, 응용 프로그램과 그 종속성을 격리된 환경인 컨테이너로 패키징하여 실행하는 기술이다.   도커를 왜 사용하나 Docker의 가장큰 장점은 이식성에 있다. 🎯 이식성 : 특정 프로그램을 다른 곳으로 쉽게 옮겨서 설치 및 실행할 수 있는 특성 배포를 해보면 로컬 환경에서는 실행이 잘 되던 프로그램이 배포환경에서는 잘 안돌아가는 경험을 할때가 있다. 이러한 문제의 원인은 다음과 같을 수 있다.OS 환경 차이라이브러리 버전 차이의존성 문제이러한 문제를 도커가 아주 간편하게 해결해줄 수 있는데,  Docker는 실행 환경을 아예 패키지로 묶어서 어디서 실행해도 똑같이 동작하도록 해줌으로써 로컬 환경과 똑같은 환경에서 실행할 수 있도록 하여 ..

Deployment/Docker 2025.03.19