본문 바로가기

반응형

분류 전체보기

(176)
[DevOps] EKS 환경에서 Helm으로 Jenkins 안전하게 구축하기 1. 개요AWS 환경에서 Jenkins를 안정적이고 효율적으로 운영하고 싶다면 Helm으로 Jenkins를 설치하는 것이 정신 건강상 좋다고 본다. 왜냐하면 EC2 환경에서의 Agent 연결하는 방식과 다르게 Controller와 Agent를 단순 values.yaml 파일만 가지고 분리하는 것도 굉장히 쉽고 Controller를 재시작해도 EBS Volume을 붙여둔다면 안전하게 재시작할 수 있기 때문이다. 다음의 내용들을 고려하여 작업한다고 가정한다. - Agent, Controller의 분리- Controller를 자유롭게 재시작할 수 있도록 EBS Volume 붙이기- docker 명령어를 agent pod에서 사용할 수 있도록 하기- 모니터링을 수월하게 할 수 있도록 하기...  참괴 : 이 글..
[Java] 김영한의 자바 중급 2편 #7 - HashSet Set : 중복을 허용하지 않고, 순서를 보장하지 않는 자료 구조1. 직접 구현하는 Set1 - MyHashSetV1이전에 구현한 성능이 O(n)으로 느린 MyHashSetV0를 다시 한번 확인해보자.1.1. 단점add() 사용 시 중복 데이터가 있는지 전체 데이터를 항상 확인해야 한다. → o(n)contains()로 데이터를 찾을 때는 Set에 있는 모든 데이터를 찾고 비교해야 하므로 평균 O(n)이 걸린다.→ 데이터를 추가할 때 중복 데이터가 있는지 체크하는 부분에서 성능이 o(n)으로 좋지 않다.→ 이 부분을 평균 O(1)로 개선해보자.1.2. 해시 알고리즘을 사용하도록 변경package collection.set;import java.util.Arrays;import java.util.Linke..
[ECK Elasticsearch] 데이터 노드가 재시작되면 레이턴시가 급증했던 이슈 필자는 현재 ECK Operator로 ElasticSearch를 운영중이다. 현재 ECK Elasticsearch는 글을 쓰는 기점으로 2.15 버전이 나왔으며 상당히 만족하면서 사용하고 있다. https://www.elastic.co/guide/en/cloud-on-k8s/current/index.html Elastic Cloud on Kubernetes [2.15] | Elastic www.elastic.co  ECK ES를 운영하면서 참고할만한 내용에 대해서도 적을 내용이 꽤나 있긴 한데 사실 ES를 잘 알지 못하기에 그런 부분들은 따로 적지 않으려고 한다. 최근에 경험했던 이슈에 대해서 간략히 정리해보려 한다.  [참고하면 좋을 무신사, 당근마켓 ECK 관련 글] https://medium.com..
[Java] 김영한의 자바 중급 2편 #6 - Set 1. List vs Set자료구조에서 List와 Set은 각각 특정한 방식으로 데이터를 저장하고 관리하는데 사용된다. 1.1. List순서가 중요하거나 중복된 요소를 허용할 때 주로 사용된다. 특징순서 유지중복 허용인덱스 접근1.2. Set중복을 허용하지 않고 요소의 유무만 중요한 경우에 사용된다.  특징유일성순서 미보장빠른 검색 (내부적으로 최적화되어 있다.) 1.3. List, Set 예시List : 장바구니 목록처럼 중요한 일련의 이벤트 목록Set : 회원 ID 집합처럼 고유한 항목의 집합 2. 직접 구현하는 Set0 - 시작인덱스가 없기 때문에 데이터를 넣고, 데이터가 있는지 확인하고, 데이터를 삭제하는 정도면 충분하다. 그리고 데이터를 추가할 때 중복 여부만 체크해주면 된다.add(value)c..
[Java] 김영한의 자바 중급 2편 #5 - List 1. 리스트 추상화1 - 인터페이스 도입자료 구조에 다형성과 OCP 원칙이 어떻게 적용되는지 확인해본다. List : 순서가 있고, 중복을 허용하는 자료 구조→ MyArrayList와 MyLinkedList의 공통 기능을 인터페이스로 뽑아서 추상화를 한다면 다형성을 활용한 다양한 이득을 얻을 수 있다.   MyListpackage collection.list;public interface MyList { int size(); void add(E e); void add(int index, E e); E get(int index); E set(int index, E element); E remove(int index); int indexOf(E o);}아래의 메서드들은 ..
[Java] 김영한의 자바 중급 2편 #4 - LinkedList 1. 노드와 연결11.1. 배열 리스트의 단점배열의 사용하지 않는 공간 낭비배열의 중간에 데이터를 추가할 때데이터를 추가할 때 기존 데이터들을 오른쪽으로 이동시켜야 한다.데이터를 삭제할 때 빈 공간을 채우기 위해 데이터들을 왼쪽으로 이동시켜야 한다.1.2. 노드와 연결낭비되는 메모리 없이 필요한 만큼 메모리를 확보해서 사용하고, 또 앞이나 중간에 데이터를 추가하거나 삭제할 때도 효율적인 자료 구조가 있는데, 바로 노드를 만들고 서로 연결하는 방식이다.Node Classpublic class Node{ // 저장할 데이터 Object item; // 연결할 노드의 참조 Node next;}1.3. 간단한 예제Node Classpackage collection.link;public class Node { ..
[Java] 김영한의 자바 중급 2편 #3 - ArrayList 0. 빅오(O) 표기법빅오(Big O) 표기법은 알고리즘의 성능을 분석할 때 사용하는 수학적 표현 방식이다.여기서 중요한 것은 알고리즘의 정확한 실행 시간을 계산하는 것이 아니라, 데이터 양의 증가에 따른 성능의 변화 추세를 이해하는 것이다.  빅오 표기법의 예시 O(1) - 상수 시간: 입력 데이터의 크기에 관계없이 알고리즘의 실행 시간이 일정한다.O(n) - 선형 시간: 알고리즘의 실행 시간이 입력 데이터의 크기에 비례하여 증가한다.O(n²) - 제곱 시간: 알고리즘의 실행 시간이 입력 데이터의 크기의 제곱에 비례하여 증가한다.O(log n) - 로그 시간: 알고리즘의 실행 시간이 데이터 크기의 로그에 비례하여 증가한다.O(n log n) - 선형 로그 시간 0.1. 빅오 표기법 정리빅오 표기법은 매..
[Java] 김영한의 자바 중급 2편 #2 - 제네릭2 1. 타입 매개변수 제한다음의 요구사항이 있다고 가정해본다.요구 사항 : 개 병원은 개만 받을 수 있고, 고양이 병원은 고양이만 받을 수 있다.개 병원과 고양이 병원은 검진(checkup)을 할 수 있고, 다른 개 혹은 고양이와의 크기를 비교할 수 있다.1.1. 아무것도 모르는 상태일 경우아무것도 모르는 상태라면 다음의 관점으로 접근할 수 있을 것이다.Dog는 DogHospital 클래스를 만든다.Cat은 CatHospital 클래스를 만든다.main 메서드에서는 dogHospital과 catHospital에 각각 dog와 cat 객체를 생성한다음에 setter 메서드로 집어넣고, 각각 checkup과 bigger 메서드를 통해 검진과 대소비교를 할 수 있을 것이다.1.1.1. 장단점장점으로는 CatHo..

반응형