🧭 Part1. 질문 여러분들은 ORM, JPA, Hibernate, Spring Data JPA, EntityManager, Repository의 차이와 관계를 설명할 수 있나요? 저도 JPA를 사용하고 있지만 ORM, JPA, Hibernate, Spring Data JPA, EntityManager, Repository 차이 대해 궁금증이 생겼습니다. 어떻게 설명해야 할지, 설명하면서 내가 몰랐던 부분(메타인지)이 어디였는지 알아보도록 하겠습니다! 글이 조금 길다고 느껴지시면 Part3 요약으로만 보셔도 좋습니다! 🧭 Part2. 알아보기 👉 2-1. 그림부터 보면서 친숙해지기 👉 2-2. ORM 👻 2-2-1. ORM ? ORM(Object-Relational Mapping)은 데이터베이스의 테이..
최근 jsvill 프로젝트에는 Kubernetes, Monitoring, Argo CD 시스템이 구축되었습니다. 이로써 기존에 있던 AWS EC2 기반의 CI/CD 파이프라인이 크게 변경되었는데요. 새로 도입한 Kubernetes를 GitHub Actions와 Argo CD를 사용하여 CI/CD Pipeline를 많은 시련?끝에 구축했습니다. 위에 올린 그림처럼 어떤 시퀀스로 동작하는지 설명해줄 수 있는 그림이 필요했습니다. 여태까지는 다른 개발자분들이 만들어 두신 그림으로도 충분히 설명이 가능했는데, 요번에 구축한 Pipeline에 맞는 그림이 없어서 제가 만들기로 했습니다. 예~전에 DB 처음 배울 때 정규화를 이해하려고 써봤던 draw.io를, Pipeline 만들 때도 많이 사용한다고 해서 오래만..
쿠버네티스(Kubernetes) 환경에서 스프링부트(Spring Boot) 애플리케이션을 배포하고, Pod을 2개로 설정했을 때 로그인 문제가 발생했습니다. 로그인을 해도 다시 로그인을 하게 되는 상황이였는데요, 스프링 시큐리티(Spring Security)를 사용할 때, 세션 정보가 한 Pod에만 저장되어 있기 때문에 로드 밸런싱으로 인해 사용자 요청이 다른 Pod로 전송될 때 세션 정보를 찾을 수 없어 로그인 문제가 발생한것으로 보입니다. 스프링 세션 + Redis를 사용하여 문제를 해결해보도록 하겠습니다. Redis를 사용하여 세션을 공유하는 과정을 단계별로 설명하겠습니다. 이 과정은 스프링 부트와 스프링 세션(Spring Session) 라이브러리를 사용하여, 세션 정보를 중앙 집중식으로 관리하는..
argo CD사용해서 배포를 하던중에 계속해서 Degraded 상태였던 문제가 있었습니다. 이벤트를 확인해보면 대부분 pv의 용량이 초과해서 나는 오류였는데요 argo CD의 작업하고 있는 어플리케이션을 삭제해버려 스크린샷은 못찍었지만 chat gpt한테 질문한 로그를 확인해보면 아래와 같습니다. (combined from similar events): failed to provision volume with StorageClass "standard-rwo": rpc error: code = ResourceExhausted desc = CreateVolume failed to create single zonal disk pvc-3baed11b-3372-4580-a77b-282d66bb8f3f: faile..
👻 Docker Compose 실습 (일단 해보면서 감 잡아보기) 이론은 밑에 적어두었습니다. 실습 먼저! 도커 컨테이너 여러개 관리하기 👉 도커 네트워크 리스트 조회 docker network ls bridge : 도커 엔진에 의해 자동으로 생성된 가상 네트워크, 컨테이너끼리 연결되는 기본 host : 호스트 컴퓨터의 네트워크 인터페이스를 그대로 사용하는 네트워크 none : 네트워크를 사용하지 않는 컨테이너 👉 도커 네트워크 생성 docker network create [이름] 🧭 Docker Compose를 사용하지 않고 CLI로 관리한다면? 👉 mysql db container 생성 docker run \\ -d --name "db" \\ -v "$(pwd)/db_data:/var/lib/mysq..
🧭 Dockerfile 간단한 실습 👉 1. 레지스트리에서 이미지 다운로드 사용법/예제 docker pull [OPTIONS] NAME[:TAG|@DIGEST] docker pull httpd 👉 2. 이미지 리스트 확인 사용법/예제 docker images [OPTIONS] [REPOSITORY[:TAG]] docker images 👉 3. 이미지 실행 (새로운 컨테이너 생성) 사용법/예제 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] docker run httpd 이미지 백그라운드 실행은 docker run -d httpd 👉 4. 현재 실행중인 컨테이너 출력 사용법/예제 docker ps 👉 4-1. 멈춘 컨테이너까지 모두 출력 사용법/예제 docker ps -a..