[이스티오] Istio Envoy Proxy의 로그 및 매트릭 가져오기
·
클라우드 메모
이스티오 소개Istio는 오픈 소스 서비스 메시이다. 여기서 서비스 메시란 서비스 간 모든 통신을 처리하는 소프트웨어 계층을 의미한다. 구현체인 Istio는 마이크로서비스 간의 트래픽 관리, 보안 강화, 정책 적용, 모니터링 및 관찰 기능을 제공한다. Istio의 핵심 프록시 엔진이자 이번 글에서 주로 다룰 Envoy Proxy라는 놈이 있다. Envoy는 마이크로서비스가 Pod으로 배포시 함께 배포되는 사이드카 프록시 형태로 동작한다. 다양한 기능을 제공하는데, 그 중 데이터 수집과 관련된 기능은 [분산 추적, 매트릭 수집, 로그 수집]이 있다. Envoy Proxy의 수집 데이터를 가져와보자이 글은 Istio가 설치되어 있고 sidecar injection이 설정되었다는 전제하에 이루어진다. 배포된 ..
[데이터베이스] 간편한 로컬 DB, H2 Database not found 에러
·
데이터베이스 메모
스프링프로젝트를 진행할 때, 테스트용 로컬 DB로 H2(Server방식)를 이용한다. 사용하는 이유는 설치와 구성이 간편하기 때문이다. 간단하게 환경 구성을 소개 해보자면, 공식 사이트에서 다운로드 받고, 스크립트를 이용해 콘솔을 실행하면 된다. 처음 DB를 생성할 때만  위와 같이 URL을 지정하면 되고, URL에 지정한 위치 이미지에선 루트 디렉토리에 test.mv.db 형태로 로컬 파일이 생성된다.H2는 해당 파일에 데이터베이스 데이터를 저장하고, 불러온다. 이후에는 URL에 tcp와 localhost를 추가하여 H2 서버에 접속하면 된다. 하지만 자바를 기반으로 구현돼서 그런지 자바 특유의 딱딱한 UI와 잡에러가 많이 일어나는 느낌을 지울 수가 없다. Database not found 에러한동안 ..
[스프링부트] Builder 패턴에 대해 알게 된 점
·
스프링부트 메모
✅ 새로 알게 된 점자연스럽게 클래스의 생성자를 정의하고 바깥에 @Builder를 붙였는데 에러가 발생했다.@Entity@Getter@Table(name = "card")@Builder // ---------> 문제 발생public class Card { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @EqualsAndHashCode.Include @Column(name = "id") Long id; @Column(name = "name", nullable = false) String name; @Column(name = "email") String email; @C..
[백준] 그리디(Tree, PQ) 코멘트 모음
·
알고리즘 메모
📝 Greedy(Tree, PQ)⭕️ 1135번 : 뉴스 전하기 (골드2)문제 유형 : greedy, sort, dp, tree시간 복잡도 : O(nlogn)풀이 방식 :- 트리 정보를 인접리스트를 이용하여 저장- 재귀를 이용해서 리프 노드부터 자신의 아래 위치에 뉴스가 전해지는 데 가장 오래 걸리는 시간을 구하여 리턴- 자식 노드(직속 부하 직원)들의 직속 부하 직원 수를 배열에 저장하고 내림차순 정렬한 뒤 한 번에 한 사람에게만 전달 할 수 있기 때문에 배열의 앞에서부터 1씩 늘려가며 소요시간을 더함 (+1, +2, +3, ... , +n) (많은 부하 직원을 가진 부하 직원부터 가장 먼저 전달해야 시간 소요가 최소화)- 배열을 오름차순 재정렬한 뒤에 가장 앞에 있는 시간(가장 오래 걸리는 시간)을..
[백준] 그리디(일반) 코멘트 모음
·
알고리즘 메모
📝 Greedy(일반)❌ 11509번 : 풍선 맞추기 (골드5)문제 유형 : greedy시간 복잡도 : O(n)풀이 방식 :- 높이별 존재하는 풍선의 개수를 저장하는 dp 배열 이용- 풍선의 위치를 순서대로 입력받을 때 현재 위치보다 앞선 풍선 중에 높이가 1 높은 풍선이 존재하면 다트가 날아오면서 현재 풍선은 자연스럽게 터지게 되기 때문에 선행 높이의 풍선 수를 줄이고 현재 높이의 풍선 수를 1 증가시킴- 높이가 1 높은 선행 풍선이 존재하지 않으면 다트를 무조건 하나 더 던저야 현재 풍선이 터지기 때문에 총 다트 수를 증가시킴 ❌ 2879번 : 코딩은 예쁘게 (골드2)문제 유형 : greedy시간 복잡도 : O(n)풀이 방식 :- 첫 풀이법에서 너무 복잡하게 생각하여 3중 for문 코드를 생각했는데..
[스프링부트] GenerationType.IDENTITY vs GenerationType.SEQUENCE
·
스프링부트 메모
흔히 엔티티에 Id를 지정할 때 Auto Increment 형태로 컬럼을 지정한다. 이를 스프링부트로 구현할 땐 다음과 같이 사용해왔다.@Id@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratredValue를 지정하면 따로 지정할 필요없이 자동으로 컬럼의 값이 생성된다.이때 생성 전략을 선택해야 되는데 이를 IDENTITY로 지정하면,Auto Increment로 Id 값을 생성하는데 이 과정을 데이터베이스에게 위임한다.즉, 데이터베이스에 저장할 엔티티에 대한 영속성 컨텍스트가 생성되면 Id 값에 해당하는 컬럼이 비워져있다. 그래서 Id가 비워져있는 엔티티를 디비에 insert하고 다시 디비로부터 지정된 Id를 받아와 영속성 컨텍스트에 저장한다. 복..
Github Submodule 연결하기
·
개발 메모
⭐️ 목적백엔드 프로젝트를 새로 시작하면서, 또 다시 AWS EC2를 생성하게 되었다. 실수로 노출되면 한 순간 엄청난 과금이 이루어지는 정보들을 또 다시 관리해야했다. 서비스 코드 레포는 추후 퍼블릭으로 변경하여 포트폴리오 용도로 사용할 예정이기 때문에 중요한 설정 정보들을 관리해야했다. .env에 환경변수로 관리하거나 .gitignore를 이용해서 yml 파일 자체를 안올리는 방법도 있지만,두 방법 모두 새로 배포를 할 때마다 수동으로 추가해야 된다는 점에서 굉장히 귀찮다고 생각했다. 이러한 이유로 민감한 정보가 포함된 yml 파일들을 저장하는 레포를 따로 만들어서 Submodule로 연결하게 되었다.  ✅ 서브모듈 연결먼저 서브모듈로 활용할 레포를 생성해준다. (평소 레포 생성하는 것과 똑같이하면 ..
[알고리즘] 2024.09.29 풀이
·
알고리즘 메모
풀이 사이트: 프로그래머스 고득점 Kit! # 완전 탐색📝 모음 사전 (lv 2) - https://school.programmers.co.kr/learn/courses/30/lessons/84512* 체감 난이도 : ⭐️ - - - -- 이건 그냥 수학 문제라 기록할 것도 없다.- 완탐까지 갈 필요도 없이 그냥 경우의 수만 따지면 되는 의미 없는 문제라고 생각한다.def solution(word): answer = 0 dic = {"A":0, "E":1, "I":2, "O":3, "U":4} for i in range(len(word)): for j in range(5-i): answer += dic[word[i]] * 5 ** (j) return..