| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- 타입스크립트
- 멀티스레드
- saga pattern
- spring boot 4.x.x
- spring boot
- 쿠버네티스
- Java
- 스프링 배치
- 키클락
- Kustomize.io
- 사가 패턴
- 배치
- spring boot 4.0.0
- MSA
- 알고리즘
- Spring Boot 4.0
- thread
- java 정렬
- spring cloud
- kubernates
- 디자인 패턴
- java21
- 스레드
- Kubernetes
- JPA
- spring batch
- TypeScript
- spring boot 3.x.x
- 생산자 소비자 패턴
- 디자인패턴
- Today
- Total
목록전체 글 (96)
PSD( Private-Self-Development )
Helm 과 Kustomize?패키지 매니저 이다. 마이크로서비스와 같이 많은 pod 를 관리하는 쿠버네티스 YML 파일들을 이름만 다르게(중복관리 최소화) 한번에 관리 할 수 있게끔 패키징 하여 사용할 수 있다. 두 패키지 매니저의 차이점Helm 배포 편의 기능이 많다마이크로서비스 와 다양한 배포 환경을 한번에 관리 할 수 있다.프로젝트 관리 패키지용 과 기업 제품 패키지용으로 둘다 사용할 수 있다.대형 프로젝트 에 유리 함수 방식 특정 환경에 따른 배포를 할때, 명령어가 길어지는 대신에 yml 파일 내부의 데이터를 유동적으로 관리한다. Kustomize.io배포 편의 기능이 상대적으로 적다마이크로서비스 와 다양한 배포 환경 중 하나만 선택 가능 프로젝트 관리 패키지용간단한 프로젝트에 유리오버레이 방식..
아마 그냥 AI 한태 그때그때 물어보지 않을 까 싶은데 그래도 조금은 외워두면 편하게 사용 가능할 것 같아 추가해두겠다!# 클러스터 초기화 (Pod Network 세팅)kubeadm init --pod-network-cidr=20.96.0.0/12 --apiserver-advertise-address 192.168.56.30# kubectl 사용 설정 mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config# Pod Network 설치 (calico : CNI)kubectl create -f https://raw.githubusercontent.com/k8s-..
이제 Object 의 기능들 중 중요한것들 위주로 알아보자! Probe어플리케이션의 상태를 체크하는 Object 기능 spec: template: spec: containers: startupProbe: # 앱 기동 완료 확인 httpGet: # 기동 완료 전까지 readiness/liveness probe 실행 안 함 path: "/actuator/health" port: 8080 periodSeconds: 5 # 5초마다 체크 fail..
Object?쿠버네티스에서 운영 및 관리하는 Object 이걸 설정하고 수정하여 컨테이너를 관리한다.yml 파일로 관리한다. yml 파일 작성 규칙같은 namespace + 같은 kind → name 중복 불가namespace 를 지정하지 않으면 클러스터 전체 범위를 가지게 된다.selector / label 매칭 실수 하지 말자 (ex. Deployment.spec.selector.matchLabels = Deployment.spec.template.metadata.labels 이게 서로 다르면 에러)당연하지만 PVC(Volume 달라 요청) 이 PV(전체 Volume 설정 )설정 값 보다 높으면 안된다 이름 작성 규칙 허용 : 소문자, 숫자, 하이픈(-) 금지 : 대문자, 언더스코어(_), 점(.)..
쿠버네티스 란?docker와 같은 컨테이너 관리 및 자동화를 제공하는 오케스트레이션 플랫폼서비스가 커질 수록 컨테이너가 기하급수적으로 늘어나는데 이를 효율적으로 관리할 수 있다. 쿠버네티스 장점장애 복구 컨테이너에 문제가 생기면 자동으로 재시작 혹은 새 컨테이너로 교체한다.자동 확장CPU 나 메모리 사용량이 폭주하면 컨테이너를 자동으로 늘린다.로드 밸런싱트래픽을 여러 컨테이너에 골고루 분배한다.무중단 배포와 롤백 Rolling Update, Blue-Green, Canary등 다양한 무중단 배포 전략을 지원하며 배포 중 문제 발생한 경우 이전 버전으로 자동 롤백 한다. 공부하는 이유회사에서는 현재 CI/CD 및 인프라를 Jenkins 와 EC2에 SSH 직접 배포 방식을 사용 중이었으나 이를 GitO..
리퀴베이스란?서비스를 운영하며, 신규 작업 시 코드 버전을 관리하는 GIT 이 있듯이 DB의 형상 관리를 위한 라이브러리이다.DB 테이블 스키마 변경 사항 등을 로깅 및 추적할 수 있다.( 해당 라이브러리를 디펜던시에 추가한 애플리케이션이 구동될 때 DB에 변경 쿼리를 실행시킨다.) 즉, 여러 개발자가 협업할 때 DB스키마 충돌을 막아주고 로컬, 개발, 운영 등 다양한 환경의 DB 상태를 동기화할 수 있다. 리퀴베이스 사용법디펜던시 추가implementation 'org.liquibase:liquibase-core' 설정 추가(application.yml)spring: liquibase: change-log: classpath:/db/changelog/master.yml // 마스터 체인지 로그 ..
JAVA 21은 가장 중요한 성능에 큰 개선이 이루어진 아주 중요한 버전이다. 1. Virtual Threadsjava 21 의 알파이자 오메가 기존 자바 스레드 1개 = OS 스레드 1개 생성 비용이 비싸고 개수 제한이 있음IO작업(DB, 네트워크) 을 대기 시 스레드가 멈춤 (블로킹) Virtual Threads자바 스레드 N개 = OS 스레드 1개생성 비용이 거의 없음, 개수 제한 없음 IO작업(DB, 네트워크) 을 대기 시 즉시 다른 가상 스레드가 OS 스레드 점유 (논블로킹)주의! 가상스레드가 블로킹 되는 경우가 있는데 synchronized 블록안에 있으면 블로킹되어 버림사용하는 대부분 라이브러리에서 synchronized 를 걷어내는 처리가 되었지만 최신버전으로 유지해야함 // 기존Exe..
JAVA 17의 경우 코드를 예쁘고 간결하게 줄여주는 문법이 많이 등장하였다. 1. Record 추가 기존 단순 데이터 전송용 객채(DTO) 를 만들기 위해서는 Lombok 이나 기본적인 코드들을 많이 작성하여 생성해야 했음.이를 Record 를 사용하여 단순하게 대체할 수 있다. (단, 불변 객체이다) // 기존public class UserDto { private final String name; private final int age; public UserDto(String name, int age) { this.name = name; this.age = age; } // Getter, toString, hashCode 등}// recordpubl..