본문 바로가기

분류 전체보기91

[JPA] JPA N+1 문제와, 해결방법 정리 JPA N+1 문제이번에 볼 문제는 JPA를 사용한다면 한번쯤은 들어봤고, 자주 봤을것이다. JPA N+1 문제에 대해서 알아보고 해결법에 대해서 알아보자.  - N+1 문제란?1번의 쿼리를 실행 했을 때, N번의 쿼리가 추가적으로 실행되는것을 뜻합니다.  예를들어 member를 조회 했을때 연관관계를 맺고있는 데이터를 조회 하기 위해 N번의 조회 쿼리가 실행된다고 생각하면됩니다.일반적인 쿼리라면 join을 사용한다면, 한번의 쿼리로 데이터를 조회 할 수 있지만. JPA에서는 member를 조회하고, member가 참조하고 있는 테이블의 연관되어있는 data를 data의 갯수만큼 조회 하기 때문입니다.  JPA의 경우 즉시로딩(fetchType_EAGER), 지연로딩(fetchType_LAZY)와 같은 .. 2023. 2. 21.
[Docker] Docker Command(명령어) 정리(+옵션) Docker 자주 사용하는 명령어 정리 - Docker 에서 자주 사용하는 명령어 및 옵션들을 정리해보자. 1. Docker System 정보 docker version : Docker 버전 및 상세정보 확인 docker -v : Docker 버전 및 빌드 버전을 한줄로 간단하게 확인. docker system info : Docker의 시스템 전체 정보 확인. docker system events : 서버로 부터 실시간 이벤트를 받는다. docker system df : 도커 디스크의 사용량 확인. docker login -u [ID] : 도커 허브에 로그인 2. Docker Image 명령어 2-1. image 리스트 출력 - docker의 image 목록을 확인. $docker images # 또는.. 2023. 2. 20.
[Docker] GitHub Actions CI/CD - Docker Image 자동 배포, run(CD) (2) GitHub Actions - Docker Image 자동 배포 (CD)- info이전 포스팅에서 GitHub Actions 를 사용하여 CI 파이프라인을 구축했었다.GitHub master 브랜치에 push 되었을 경우, jar빌드, docker image빌드, docker hub 푸시(퍼블리시) CI를 구축해놓았으니 CD를 구축해야한다.한마디로 docker hub에 푸시된 image를 EC2에서 새롭게 pull 받아 실행하는것이다.github master 브랜치에 push하는 순간 test 부터, EC2에 배포 및 실행까지 자동으로 이루어지는것이다.또한 이전에 포스팅 되었던 글에서 추가 된 내용이 많다. (제대로 공부하지 못하고 적용하려니, 엄청난 삽질의 연속..) * 주의할점 및 유의사항 (필독!.. 2023. 2. 19.
[Docker] GitHub Actions CI/CD - Docker Image 자동 빌드, push(CI) (1) GitHub Actions 를 사용한 Docker Image 자동 빌드, push - Info Docker를 사용하여 EC2에 Spring Boot를 배포하는 방법들을 포스팅해왔다, 실제로 해봤다면 알겠지만 해당 작업은 상당히 복잡한 프로세스를 갖고있고, 자동화 또한 되어있지 않다. 중간에 실수가 있거나, 순서중 하나만 헷갈리더라도 굉장한 장애를 발생시킬 수 있다.  이러한 배포 자동화를 CI/CD(Continuous Integration, Continuous Deployment) 라고 한다. CI (Continuous Integration)지속적 통합 : 여러 개발자들이 협업을 하고 있는 경우 발생하는 '불일치'를 최소화 해주는 개념.예를들어 master 브랜치에 PR 요청이 왔을때, 빌드, 테스트를 .. 2023. 2. 18.
[Docker] Docker - Spring Boot로 EC2 배포하기 Docker - Spring Boot로 EC2 배포하기 ○ 목표 - Spring Boot (server) Docker Image로 Build - Docker Hub에 Docker Image 공유(push) - EC2 Docker Image pull 및 설치 -> 한마디로 Spring Boot를 Docker를 이용하여 EC2에 간편하게 배포하는것이 목적이다. * 추가 : EC2 내부의 MySQL Container 와의 연동, 아래글에서 MySQL 컨테이너 생성법 참고! https://lucas-owner.tistory.com/47 [Docker] Docker로 AWS EC2 - MySQL 설치 및 테스트 Docker image 로 EC2에 MySQL 설치 및 테스트 하기 ◎ 목적 - AWS EC2 내부에 .. 2023. 2. 18.
[Docker] Docker로 AWS EC2 - MySQL 설치 및 테스트 Docker image 로 EC2에 MySQL 설치 및 테스트 하기 ◎ 목적 - AWS EC2 내부에 Docker Image 를 사용하여 MySQL을 손쉽게 설치하고 Test 하는것이 목적이다. 이 글에 이어서 Spring Boot 또한 Docker Image 로 Build 후에 EC2에 배포할 예정이다. - EC2에 MySQL과 같은 DB를 설치하는 경우는 별로 없다. 왜냐하면 AWS RDS라는 DB 시스템이 이미 존재하기 때문이다. EC2는 Server의 목적만을 수행하고, RDS는 DB 의 역할만 하기 때문에 Resource 사용 측면에서 좋기 때문이다. - 하지만 사이드 프로젝트, 토이 프로젝트, 연습 등등 서비스 트래픽과 리소스 사용량을 고려 하지 않는다면 RDS 를 사용하지 않고, EC2내부에.. 2023. 2. 17.
[Docker] EC2 - Docker 설치 AWS - EC2, Docker 설치 - 목표 AWS EC2에 Docker 설치. apt 방식을 사용하여 Docker 설치. - 환경 AWS EC2 Ubuntu(프리티어) Mac (Local) 1. AWS EC2에 Docker 설치 1-1 Terminal을 통해 EC2에 ssh 방식으로 연결. 1-2 Docker를 설치하기 위해 apt - update - apt를 사용하여 Docker를 설치 할 예정이다. - sudo 키워드를 계속 붙여주기 싫다면, sudo su 명령어를 통해 해당 터미널에만 sudo 권한을 활성화 시켜주자. $ sudo apt update 1-2 Docker 설치에 필요한 Package 들을 설치 해줍니다. - 해당 패키지는 apt가 https 저장소를 사용 할 수 있게 해주는 Pac.. 2023. 2. 17.
[AWS] RDS 생성 - (EC2 연결, SpringBoot 배포)(2) 목표 - 지난번에 배포했던 AWS EC2와 RDS 생성/연결 하는것을 진행 해보자. DB는 MySQL 5.7.34 버전을 사용할 예정이다. 마찬가지로 프리티어(무료)를 사용할 예정이고, EC2 연결 및 Local 에서 연결 Test 까지 진행 할 예정이다. ◎ 과금 RDS 과금은 db.t2.micro 기준. 750시간 까지 무료. 초과시 시간당 0.026$ 부과. 한달 3천원 ~ 이상 부과. 사용용량 초과, 스냅숏(백업) 같은 기능으로 인해 추가 요금 발생 가능. 목차 RDS 인스턴스 생성 보안 그룹 생성 Local 접속 테스트 파라미터 그룹 설정(DB 설정) EC2 연결 1. RDS 인스턴스 생성 - AWS Console에서 RDS 메뉴로 이동. - 데이터 베이스 생성 버튼을 클릭! 1-1 DB 선택 .. 2023. 2. 16.
[AWS] EC2 생성 - Spring Boot 배포(1) 목표 AWS EC2 인스턴스 생성 후 EC2 내부에서 Spring Boot 서버를 실행 하는것이 최종 목표입니다. CI/CD 인프라 시스템을 구축하는것이 아닙니다. (단순 EC2 단일 배포) - 배포시 유의할 부분 고정 IP 주소를 사용합니다. (탄력적 IP : 이부분 설정을 넘기셔도 됩니다.) 터미널에서 SSH 클라이언트를 통해 EC2에 접속합니다. Git 방식이 아닌, FileZila 를 통해 프로젝트를 이동합니다. 프리티어(무료)를 이용합니다. - 사전 필요 작업 AWS 계정 생성. pem 키 발급. FileZila(for Mac) 프로그램 설치. (파일전송) jar 파일 build AWS Region 설정 (Asia/Seoul) AWS Console 우측 상단에서 설정 가능! 목차 보안그룹 설정 .. 2023. 2. 15.