GitHub

https://github.com/Choidongjun0830

분류 전체보기 463

Rolling Updates and Rollbacks

처음 Deployment를 생성하면 롤아웃을 촉발한다. 새로운 롤아웃은 새로운 배포 revision을 생성한다. 컨테이너의 버전이 바뀌면 새로운 롤아웃이 촉발되고, 새로운 배포 revision이 생성된다. 이 revision이 Deployment에서 일어난 변화를 추적할 수 있게 해주고, 롤백을 도와준다. 롤아웃 커맨드revision의 상태 확인 kubectl rollout status deployment/       revision history 확인kubectl rollout history deployment/      Deployment strategyRecreate - 모두 지우고 다시 다 만들기다운타임 발생 Rolling Update - 하나씩 지우고 하나씩 만들기다운타임 발생하지 않음 디폴트가..

클라우드 2024.11.28

Kube-proxy

Kubernetes Cluster에서는 모든 Pod가 서로에게 접근할 수 있다. 이것은 Pod Networking Solution을 클러스터에 배포함으로써 이루어진다. Pod Network는 내부 가상 네트워크로 모든 Pod가 연결되는 클러스터 내 모든 노드에 걸쳐있다. 이 네트워크를 통해 서로 통신할 수 있다.하지만, Pod의 IP는 죽었다 살아나면 같은 IP를 가질거라는 보장이 없다. 그래서 서비스를 사용하고, Endpoints를 사용한다. 서비스로 묶인 Pod들 중 접근하려는 Pod의 IP 주소를 안정적으로 얻으려면 Kube-proxy가 필요하다. Kube-proxy는 Kubernetes 클러스터의 각 노드에서 동작하는 프로세스로, 서비스와 이를 구성하는 Pod 목록을 연결하는 역할을 한다. 이를 ..

클라우드 2024.11.23

API Server

kubectl get nodes 명령어 입력시 동작kubectl 명령어가 API Server에 도달. API Server가 요청을 인증하고, 유효성을 검사etcd 클러스터에서 데이터를 가져와 요청된 정보로 응답kubectl 명령어를 사용하지 않고도 직접 API Server에 요청 가능curl -X POST /api/v1/namespaces/default/pods ... (Pod 생성 예시) API Server의 역할Authenticate UserValidate RequestRetrieve dataUpdate ETCDAPI 서버를 이용하여 업데이트 수행 Schedulerkubelet API Server 보기kubectl get pod -n kube-system 을 입력하면 kube-apiserver-mas..

클라우드 2024.11.22

DOCKER VS CONTAINERD

초기에는 Docker가 지배적이라서 Kubernetes는 Docker만 지원했었다.하지만, 시간이 흘러 다른 Container Runtime을 지원할 필요가 생겼고, 그래서 CRI(Container Runtime Interface)를 만들었다.CRI는 어떤 공급업체든 Kubernetes의 Container Runtime이 될 수 있게 해준다.  Docker는 CRI보다 이전에 생겼고 여전히 주된 Container Runtime이기 때문에, Kubernetes는 Docker를 지원하기 위해 dockershim을 만들었다. 그래서 CRI 없이도 Docker는 동작했다. Docker Docker는 Container Runtime만 있는게 아니라, 여러개의 도구로 이루어져 있다.Docker CLI커맨드라인 인터..

클라우드 2024.11.22

[원티드 백엔드 챌린지 11월] 테스트 코드와 API 문서화 자동화

ArchUnit아키텍처에 대해 정리한 문서 없이도 서술적인 메서드명을 통해서 아키텍처 구조에 대해서 이해할 수 있고, 아키텍처의 규칙 또한 쉽게 정의할 수 있으며 더불어 검사 기능까지 제공해주는 테스트 툴 라이브러리프로젝트의 아키텍처 구조를 Test Code로 강제화하는 방법론 적용 방법1. 의존성 추가testImplementation("com.tngtech.archunit:archunit-junit5:1.2.1")2. 아키텍처에 대한 규칙 정의; 시나리오 작성예시Controller 계층에서는 Service 계층만 참조 가능presentation.web 패키지의 클래스는 port.in 클래스에만 의존해야 한다.presentation.web 패키지의 하위 클래스는 @Controller나 @RestContr..

Spring 2024.11.22

[원티드 백엔드 챌린지 11월] 객체지향스러운 아키텍쳐 설계

Encapsulation객체의 변수와 메서드를 하나로 묶고, 실제 구현 내용 일부를 외부에 감추는 기술 public API를 구현하는데 사용되는 내부 상태와 행동을 내부로 숨기는 것접근 제한자를 이용해서 캡슐화를 설계 및 적용 캡슐화를 지키지 않으면 생기는 문제들캡슐화를 지켰을 때 얻을 수 있는 변경의 유연함을 잃어버림예를 들어, 변수가 public이라 client가 변수의 값을 직접 수정했는데, 만약 변수명이 바뀌어버린다면, client가 직접 쓴 변수명도 같이 수정해주어야 한다. 불변식이 깨져서 설계자의 의도대로 동작을 하지 않아 예외가 발생할 수도 있다. => 최대한 모든 요소를 private으로 선언해놓고, 접근 가능 범위를 한단계 (default > protected > public)씩 넓혀가는..

Spring 2024.11.22

[원티드 백엔드 챌린지 11월] Spring의 기능 자세히 살펴보기

Servlet Web Page 또는 결과 값을 동적으로 생성하는 역할을 하는 자바 프로그램Controller와 Service 레이어가 함께 묶여져 있는 것 Spring Boot = Tomcat + SpringTomcat (WAS (Web Application Server))Web server + Servlet Container의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버Web Server네트워크 처리(HTTP 및 Socket): Client의 요청부터 응답까지 전반적인 네트워크 처리 역할정적 리소스 처리: HTML, CSS, JS와 같은 리소스만 처리Servlet ContainerServlet 관리 및 처리: 동적 페이지 생성 및 처리Web Server와 네트워크 처리..

Spring 2024.11.22

[원티드 백엔드 챌린지 11월] 효율적이면서 현대스러운 코드 작성법

의미있는 코드 StyleJava에서 인스턴스를 생성하는 방법1. 생성자. Constructor Method 이용2. 정적 팩토리 메서드: Static Factory 이용장점이름을 가질 수 있다. (의미 전달)반환될 객체의 특성을 쉽게 묘사.반면에 생성자는 클래스명과 같기 때문에. 호출될 때마다 인스턴스를 새로 생성하지는 않아도 된다. (싱글톤)시간이 지나고 프로젝트가 커지면 메모리 관리를 해야함. 반환 타입의 하위 타입 객체를 반환할 수 있다. (다형성) 입력 매개변수에 따라 매번 다른 클래스의 인스턴스를 반환 가능 (OCP)상위 클래스를 반환해도, 하위 클래스를 반환해도 된다. 정적 팩토리 메서드를 작성하는 시점에는 반환할 클래스의 객체가 존재하지 않아도 된다. 인터페이스로만 존재하고, 구현체로 존재하..

Java 2024.11.22

Git Commands

브랜치(Branch)소프트웨어를 개발할 때, 개발자들간에 동일한 소스코드를 함께 공유하고자 할 때.하나의 소스코드로 동시에 다양한 작업을 할 수 있음.  브랜치 생성터미널 켜기 -> git branch [branch명] -> git switch [branch명] (HEAD가 가리키는 브랜치 변경) -> git commit=> 브랜치가 생성됨. 브랜치 합치기mergegit switch [브랜치명1] -> git merge [브랜치명2] (중복된 부분이 있으면 살릴 부분을 정해두어야 함)-> git switch [브랜치명2] -> git merge [브랜치명1]   rebasegit rebase [브랜치명1] -> git switch [브랜치명1] -> git rebase [브랜치명2]  정돈되어 로그가 나..

CS 2024.11.22

[프로그래머스] Lv3. 이중우선순위

이중우선순위큐문제 설명이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다.명령어수신 탑(높이)I 숫자큐에 주어진 숫자를 삽입합니다.D 1큐에서 최댓값을 삭제합니다.D -1큐에서 최솟값을 삭제합니다.이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요.제한사항operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다.operations의 원소는 큐가 수행할 연산을 나타냅니다.원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합니다.빈 큐..

Java 2024.10.28
728x90