응애개발자
article thumbnail
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (7)
프로젝트/WMS 2024. 11. 8. 22:20

이제 github 특정 브랜치에 커밋이 발생하면 자동으로 배포가 되는 로직을 만들어보겠습니다. 저는 main브랜치에 푸쉬되면 배포가 되도록 하겠습니다. 젠킨스 설정1. 플러그인 설치웹훅 설치를 위해 Generic Webhook Trigger 플러그인을 설치하겠습니다. 2. 파이프라인 설정파이프라인의 상세 내용에 build triggers를 보면 generc Webhook Trigger가 추가된 것을 볼 수 있습니다. Post content parameters를 입력하겠습니다.  main브랜치로 머지되었을때만 동작하는 트리거입니다. 깃허브 토큰도 적용해줍니다.  그리고 해당 옵션도 체크해줍니다. 젠킨스 설정 이번에는 레퍼지토리에서 웹 훅을 날려보도록 하겠습니다. Payload URL은 젠킨스 서버 주소 +..

article thumbnail
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (6)
프로젝트/WMS 2024. 11. 7. 20:42

이번엔 스프링부트 코드를 Webhooks를 통해 자동배포를 해보겠습니다. 젠킨스 안에 도커 설치하기젠킨스를 설치할때 도커 인 도커를 해야합니다. 만약 하지 않았다면 젠킨스를 삭제 후 다시 올려야 합니다. 1️⃣ Jenkins 컨테이너에 접속합니다.docker exec -it jenkins-server /bin/bash 2️⃣ sudo를 사용하기 위해 관리자 모드로 들어갑니다.su - 관리자 모드로 진입할때 비밀번호에서 계속 실패가 나올수 있는데 이때 밑을 참조하자. [오류해결] 젠킨스 su : Authentication failure 문제Jenkins 컨테이너에 접속하고 sudo를 사용하기 위해 관리자 모드로 진입중 해당 오류가 발생했다. 이는 Ubuntu 시스템에서 sudo passwd root 명령어..

article thumbnail
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (5)
프로젝트/WMS 2024. 11. 7. 16:41

이번에는 AWS 볼륨의 크기를 수정하려한다. 현재 AWS의 볼륨 크기는  이렇게 8GB로 설정이 되어있다. 이것을 16GB까지 늘려보겠다. (프리티어는 30GB까지 늘릴 수 있다.) 1️⃣ AWS -> 인스턴스 -> 스토리지 -> 볼륨ID 마우스 우클릭 볼륨 수정 클릭 2️⃣ 크기 변경후 수정 클 3️⃣볼륨 상태가 변경될때까지 기다리자.modifying -> optimizing -> 사용중 4️⃣수정이 되었는지 확인df -h 아직 파티션이 할당되지 않았기 때문에 사이즈는 변함이 없다. 5️⃣ 파티션 크기 확인lsblk'/dev/xvda' 디스크와 관련된 정보를 확인하자.xvda는 실제 디스크 장치를 나타내며 16기가를 나타내고,xvda1은 우리의 루트 파일 시스템의 크기를 보여준다. 따라서 이 xvda1..

article thumbnail
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (4)
프로젝트/WMS 2024. 11. 6. 15:25

오늘은 도커에 젠킨스를 설치하겠습니다.하지만 프리티어 인스턴스는 t2.micro를 사용하고 메모리가 1GB로 작습니다. 그래서 젠킨스나 스프링을 EC2서버에 올리게 되면 서버가 다운될 확률이 높습니다. 따라서 스왑 메모리를 설정한 후 젠킨스를 설치하겠습니다. Swap Memory실제 메모리가 가득 찼는데 더 많은 메모리가 필요로 할 때, 하드디스크의 공간을 가상 메모리로 대체하여 사용하는 것을 의미합니다.실제 메모리보다는 속도가 느리지만, 시스템이 다운되거나 장애를 발생시키는 것 보다는 스왑 메모리를 활용하여 안정성을 높일 수 있는 방법입니다. 1. 용량 확인df -h보면 주요 용량 디스크 /dec/root 에 디스크용량 6.8G에 사용중 용량 3.5G 남아있는 용량 3.3G 남아있다.2. 현재 스왑 메..

article thumbnail
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (3)
프로젝트/WMS 2024. 11. 5. 20:59

도커를 설치했으니 이제 도커에 MySQL을 올리고 MySQL 워크벤치와 연동해보겠다. Docker로 MySQL 설치 & 사용자 생성1. MySQL Docker 이미지 다운로드docker pull mysql 2. 다운로드한 이미지 확인docker images 3. MySQL Docker 컨테이너 생성다음 명령어로 컨테이너를 생성한다.컨테이너 이름: --name 뒤에 컨테이너 이름을 입력한다.비밀번호:  에서 비밀번호를 입력하는데  와 > 는 입력하지 않는다.MySQL의 특정 버전을 사용하고 싶다면 버전을 입력해준다.docker run --name mysql-container -e MYSQL_ROOT_PASSWORD= -d -p 3306:3306 mysql:latest 💡 명령어 참고:--name: 생성할..

article thumbnail
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (2)
프로젝트/WMS 2024. 11. 4. 22:40

그럼 저번에 진행했던 EC2 인스턴스 생성과 터미너스에 이어서 오늘은 EC2 우분투 서버에 Docker를 설치하겠습니다.EC2 서버에 도커를 설치하면, 애플리케이션을 컨테이너로 배포할 수 있어 빠르고 일관된 배포가 가능합니다. 자세한 Docker 관련 내용은 따로 정리하도록 하겠습니다. 먼저 저의 실행환경은 Ubuntu 24.04.1 LTS 버전입니다.Docker 설치하기1️⃣시스템 업데이트를 진행합니다. sudo apt update 2️⃣필요한 의존성 패키지 설치apt install -y apt-transprot-https ca-certificates curl software-properties-common 3️⃣Docker 공식 GPG 키 추가curl -fsSL https://download.dock..

article thumbnail
[CI/CD] EC2+도커+젠킨스+NIGNX 배포하기 (1)
프로젝트/WMS 2024. 11. 4. 20:22

오랜만에 다시 프로젝트를 하려고 한다. 백엔드 API는 다 만들어 놨으니 배포를 먼저 진행하고 프론트 작업도 완료해서 EC2에 올릴 예정이다.  EC2 인스턴스 시작하기1. AWS EC2 페이지 접속 https://ap-northeast-2.console.aws.amazon.com/ec2/home?region=ap-northeast-2#Home: ap-northeast-2.console.aws.amazon.com  지역은 서울로 되어있다. 인스턴스를 시작해보자. EC2 인스턴스란 가상 컴퓨팅 환경으로 가상 머신을 생성하고 실행하는데 사용된다. 2. 인스턴스 시작1️⃣이름 및 애플리케이션을 우분투로 설정해줍니다. 2️⃣인스턴스 유형은 t2.micro로 설정해줍니다 (프리티어 이기 때문에 무료로 사용할 수 ..

article thumbnail
[JPA] List 조회시 N+1문제 Fetch join으로 성능 개선하기
프로젝트/WMS 2024. 8. 8. 00:08

문제상황ERD구조는 위와 같은 상황에서 유저들의 목록을 가져오는데 부서이름과 직급이 필요했다.데이터베이스에서는 회원 총 21명, 부서 5개, 직책 5개가 존재했다.ResponseDTO그래서 리스트 각각에는 밑과 같은 ResponseDTO정보들을 넣어주었다.@Data@Builderpublic class UserListResponseDTO { private Long id; private String name; private String email; private Role role; private String profileImage; private String departmentName; private String positionName; //DTO메서드로 재사용성을..

article thumbnail
[AWS/S3] Spring에서 S3에 데이터 저장하기
프로젝트/WMS 2024. 8. 6. 02:10

프로젝트 진행 시 이미지를 서버에 저장해야 할 경우가 많다. AWS의 S3를 이용하면 이미지를 저장하고 해당 링크를 DB에 저장하여 효율적으로 관리할 수 있다. 이를 통해 서버 용량을 절약하고, 비용 절감 효과를 얻을 수 있다. 그럼 AWS의 S3를 활용하여 이미지를 저장하고 확인해보자.1. S3 버킷 생성하기1.버킷 생성하기AWS > S3 > 버킷 > 버킷만들기 클릭또는 밑의 주소로 접속합니다.https://ap-northeast-2.console.aws.amazon.com/s3/bucket/create?region=ap-northeast-2# 2. 버킷 생성버킷을 생성하기 위해 이름을 만들어 줍니다.버킷은 디렉토리/폴더 개념으로 이해하시면 됩니다. 그리고 버킷의 퍼블릭 엑세스 차단을 해제해줍니다. 3..

article thumbnail
Spirng Security + JWT + OAUTH2 를 활용한 일반로그인, 소셜로그인(Kakao) (2)
프로젝트/WMS 2024. 7. 3. 00:17

이번 시간은 Kakao 로그인이다.🤔 왜 OAUTH2를 진행했나?OAUTH2를 사용하는 또다른 중요한 이유는 회원에 대한 중요한 개인정보(ex. 계정과 계정에 대한 비밀번호, 기타 개인정보)를 내 DB에 저장하지 않음으로써 혹시라도 노출될 사고를 줄일 수 있다는 점때문에 사용하였다. 결론적으로 사용자와 개발자 모두에게 편의성과 보안성을 제공할 수 있기 때문에 진행하게 되었다.  📌 Spring Security 동작 원리모든 책임을 백엔드가 맡음필자는 소셜 로그인을 백엔드로만 진행했다. 보통 백엔드와 프론트엔드를 섞어서 프론트에서 코드를 받거나 토큰을 발급받는 경우가 있는데 카카오와 같은 대형 서비스 개발 포럼 및 보안 규격에서는 책임을 나누어 받는 것을 지양한다. 따라서 모든 책임을 프론트에서 맡거나..