분류 전체보기 (177) 썸네일형 리스트형 [FinOps] Kubecost에 대해서 #1 최근에 작업하고 있는 Kubecost에 대해서 설명해보려고 합니다. 1. Kubecost란 무엇인가? 왜 쓰는가?쿠버네티스(Kubernetes)는 현대 인프라에서 컨테이너 오케스트레이션의 표준으로 자리 잡았다. 그러나 쿠버네티스를 사용하면서 자주 발생하는 문제 중 하나는 비용에 대한 가시성 부족이다.(필자는 Amazon 환경에서 EKS로 쿠버네티스 클러스터를 운영중이기 때문에 EKS 위주로 글을 작성함을 참고할 것) 주로 고민했던 부분들은 아래와 같다. 1. 어떤 워크로드가 얼마나 리소스를 요청(Request)하고 있는지2. 어떤 워크로드가 얼마나 리소스를 사용(Usage)하고 있는지3. 어떤 워크로드가 얼마나 네트워크 비용을 많이 사용하고 있는지- 네트워크 비용 중 Internet으로 나가는 비용은 .. [React] 기본 개념 공부 React 기본 개념들에 대해 정리합니다. 공부하는 목적은 플랫폼 엔지니어링 오픈소스인 https://backstage.io/ 에서 Custom 플러그인을 개발하기 위해 React 지식이 필요한 것 같아 공부하려 해봅니다. React는 UI를 만들기 위한 Javascript 라이브러리임. Factbook에서 개발했으며 빠르고 효율적인 UI를 만들기 위한 목적으로 만들어졌음 1. Component- React의 핵심 단위- UI를 작고 재사용 가능한 단위로 쪼개서 관리- 함수형 컴포넌트가 많이 사용된다. function Hello(props) { return Hello, {props.name}!} 2. JSX (JavaScript XML)- JavaScript 코드 안에서 HTML 처럼 보이는 코드를 .. [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 { .. 이전 1 2 3 4 ··· 23 다음