일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- System.in
- 제네릭 타입
- Effective JAVA
- annotation processor
- 함수형 인터페이스
- 합병 정렬
- 항해99
- raw 타입
- 로컬 클래스
- 정렬
- 상속
- 브릿지 메소드
- auto.create.topics.enable
- 자바스터디
- Switch Expressions
- System.err
- 접근지시자
- junit 5
- 자바할래
- Study Halle
- 프리미티브 타입
- Java
- System.out
- 바운디드 타입
- public 필드
- github api
- 스파르타코딩클럽
- 익명 클래스
- 람다식
- 제네릭 와일드 카드
- Today
- Total
목록전체 글 (269)
코딩하는 털보

Kubernetes vs Spring Cloud개요기존 인프라를 Kubernetes로 변환하면서Kubernetes의 객체들이 MSA를 위해 사용하던 Spring Cloud 서비스들의 역할을 대체할 수 있게 되었다.물론 둘다 함께 사용할 수는 있겠지만 동일한 역할을 하는 요소들이 여러개 있게 되므로동일한 작업을 두번 할 수 있다.구조가 복잡해진다.디버깅이 어려워진다.불필요한 자원 사용량이 증가할 수 있다.따라서 우리 팀도 어떤 기술을 사용해야 할지 결정하는 것이 좋을 것 같다.내용필요 기술과 그에 대한 스펙은 Spring Cloud와 Kubernetes에서 아래와 같이 구분된다.https://velog.io/@mdev97/Project-Spring-Cloud-Kubernetes현재 우리는 Spring Cl..
Kubernetes CI/CD [jenkins, argo cd]Jenkins & kustomize & Argo CD개요Docker compose를 사용했던 인프라에서 Kubernetes 인프라로 변경되면서 CI/CD 구조가 변경되었다.CI/CD 구조로 가장 많이 검색되는 Jenkins-K8S CI/CD 방식을 검토하고 테스트하였다.Jenkins - kustomize - Argo CD - Kubernetessource code repo와 manifest repo는 서로 다른 것임을 인지해야한다.manifest를 업데이트하는 방법으로 kustomize를 사용하였다.컨테이너 이미지의 태그 버전을 기반으로 argo CD에서 이미지 변경을 추적하는 방법이 가장 많이 검색되었다. 백엔드 팀의 경우 이미지 tag 버..
Coredns host unreachablednsutils에서 nslookup을 통해 coredns를 점검할 수 있다.[root@k8s-mn e8ight]# kubectl exec dnsutils -n default -it -- nslookup ndxpro-eureka.ndxproServer: 10.96.0.10Address: 10.96.0.10#53Name: ndxpro-eureka.ndxpro.svc.cluster.localAddress: 10.103.249.194나의 경우 host unreachable 문제가 간헐적으로 발생하고 있었는데,ube-system coredns-7cc7cd66d9-5g8wv 1/1 Runnin..
Coredns에서 외부 DNS 서버 추가하기K8s의 파드들은 기본적으로 coredns에서 각 파드 또는 서비스들의 도메인 주소를 통해 IP를 가져온다.예를들어 동일한 namespace 내 서비스에 대한 도메인주소는{service name}.svc다른 namespace의 서비스에 대한 도메인 주소는{service name}.{namespace}.svc만약, coredns에서 제공하는 클러스터 내 DNS 외에 다른 DNS 서버를 사용하고 싶다면 coredns config를 수정하여 해결할 수 있다..:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { ..
Kibana vs Grafanakibana시각화: 사용자는 수직 막대 차트, 수평 막대 차트, 원형 차트, 선 그래프 등 다양한 형식으로 정보를 시각화할 수 있습니다.대시보드: 사용자는 동적이고 적응 가능하며 사용자 정의된 대시보드를 만들고 이를 다른 팀원과 공유할 수 있습니다.지리공간 데이터: Kibana는 지리공간 데이터에 대한 지원을 제공하며 사용자가 지도에 정보를 시각화할 수 있도록 합니다.데이터 내보내기: Kibana를 사용하면 사용자가 PDF, PNG, CSV 등 다양한 형식으로 시각화 자료와 대시보드를 내보낼 수 있습니다.플러그인 : 사용자가 플러그인을 설치하여 사용자 정의 시각화 및 기타 향상 기능(예: 3D 차트용 플러그인)을 추가할 수 있습니다.검색 및 쿼리 기능: 사용자는 직관적인 ..
description: 정적 팩토리 메서드와 다릅니다!팩토리 메서드 패턴팩토리 메서드 패턴은인스턴스의 생성 책임을 인터페이스의 추상 메서드로 감싸는 패턴이다.팩토리 인터페이스를 구현하는 각 콘크리트 클래스들이 어떤 타입의 인스턴스를 만들 것인지 결정한다.이 패턴을 사용하여 구현하는 이유는 OCP 때문이다.OCP(Open-Closed Principle)확장에 대해서는 개방적이고 수정에 대해서는 폐쇄적이어야 한다는 원칙.즉, 기존 코드를 수정하지 않으면서 기능을 추가(확장)할 수 있어야 한다는 원칙이다.옷을 생산하는 공장을 예로 들어 보자옷 객체에 대응하는 Clothes 클래스가 있고 Clothes 객체를 생성하는 ClothesFactory 클래스가 있다.옷 클래스에는 상품번호와 브랜드, 종류 속성이 있다...
목적 오직 하나의 인스턴스만 제공해야 할 때 사용한다. 언제일까? RestTemplate, JDBC 같은 외부 커넥션 풀을 만드는 인스턴스 전역 캐시 데이터 로그 기록 담당 클래스 이런 클래스들이 요청마다 생성된다면 매번 불필요한 객체 생성 과정이 발생하거나 메모리를 굉장히 비효율적이게 사용하게 될 수 있다. 특징 new를 사용해서 생성할 수 있게 하면 안된다. 싱글톤 인스턴스에 접근하게 해주는 클래스가 필요하다. public class WaitingQueue { private Queue queue = new PriorityQueue(); private static WaitingQueue instance; //처음에만 생성하고 두번째 요청부터는 생성된 싱글톤 인스턴스 반환 public static Wai..

https://ko.wikipedia.org/wiki/%ED%80%B5_%EC%A0%95%EB%A0%AC 퀵 정렬은 병합 정렬과 동일하게 분할 정복을 사용하여 정렬 문제를 해결한다. 퀵 정렬의 특별한 점은 pivot이라는 개념을 사용하는데, 배열 요소 중 하나를 pivot으로 정하여 pivot보다 작은 값을 왼쪽으로 큰 값을 오른쪽으로 배치하고 분할된 두 영역에 다시 위 과정을 크기가 1이 될 때 까지 반복하여 마지막에 모두 합치면 정렬되는 방식이다. 퀵 정렬의 시간복잡도는 O(nlogn)이다. Big O notation은 알다시피 가장 최악의 상황에서의 시간복잡도를 표현하는데, 퀵정렬의 최악의 시나리오에서 시간복잡도는 O(n^2)이다. 하지만 퀵 정렬은 특별하게 pivot을 어떤 요소로 선택하느냐에 따..

Mongodb Replica set Mongodb의 replication 방식 Mongodb에서 Replica set을 구성하려면 Failover를 위해 최소 3개의 노드가 필요함. 이는 데이터 복제본이 3개여야 하는건 아니고 장애 복구 시 어떤 노드를 Primary로 승급하는지 투표를 하기 위해 3개의 노드가 필요한 것. 그렇기 때문에 복제 노드를 2개 추가로 구성(PSS)하거나 또는 복제 노드 구성에 대한 부담을 줄이기 위해 복제 노드 하나와 오직 투표만 수행하는 Arbiter를 구성(PSA)하는 두가지 방식을 통해 Replica set을 구성할 수 있다. 동기화 secondary node는 primary node의 oplog(데이터 작업 로그)를 사용하여 데이터를 비동기적으로 적용한다. 이로써 no..
합병 정렬은 분할 정복 알고리즘을 이용한 정렬 방법이다. 분할 정복은 큰 문제를 작은 문제로 쪼개어 작은 단위의 문제를 먼저 해결하면서 병합시켜 마지막으로 가장 큰 문제를 해결하는 문제 풀이 방법이다. 합병 정렬의 과정은 크게 배열을 분할하는 부분과 분할된 배열을 다시 합병하는 부분으로 나뉘어 진다. 분할에서는 배열을 두 개의 배열로 분할한다. 합병에서는 두 배열을 정렬을 하면서 합친다. 시간복잡도는 분할에서 log2(N), 합병에서 N으로 분할이되는 만큼 다시 합병하기 때문에 둘을 곱하여 N*log2(N)이 된다. 성능이 선택, 버블, 삽입 정렬과 비교하여 효율적이고 안정적이기 때문에 자주 사용되는 정렬 방법 중 하나이다. Java의 Arrays.sort() 및 Python sorted() 또한 합병 ..