본문 바로가기

Development/ETC

(9)
프로메테우스 Getting error "expected label name, got \"BCLOSE\"" Error 문제 새로운 서비스를 올렸는데 프로메테우스가 서비스 Metric 집계에 실패하고 있었다. 로그를 확인 해 보니 Getting error "expected label name, got \"BCLOSE\"" Error curl로 응답을 했을 때 정상적으로 데이타들이 넘어왔다. 그런데 이 데이타들을 프로메테우스가 인지를 못하는 것. 해결 produces = ["text/plain; version=0.0.4"] 로 content-type을 지정해 주어야한다. @GetMapping("/metrics", produces = ["text/plain; version=0.0.4"]) fun metrics(): String? = prometheusMeterRegistry.scrape()
카프카 개요 1. 카프카 디자인의 특징 분산시스템 : 동일한 역할을 하는 서버를 추가하여 부하를 분산할 수 있다. 페이지 캐시를 이용한다 카프카 - 페이지캐시 - 디스크 작은 단위의 I/O를 묶어서 배치로 처리 2. 카프카 데이타 모델 2.1 토픽(Topic) 카프카 클러스터는 토픽에 데이타를 저장한다. 2.2 파티션(Partition) 토픽을 분할한 단위이다. 파티셔닝을 통하여 병렬처리가 가능하다. 단, 메시지의 순서는 각 파티션 내에서만 보장되며 파티션 사이의 순서는 보장하지 않는다. 파티션 수가 많으면 좋은가 ? 당연히 무조건 많다고 좋은 것은 아니다. 파티션 수가 많아짐에 따라 생기는 문제점이 있다. 파일 핸들러가 낭비될 수 있다. 장애 복구시간 증가 나중에 다루겠지만, 미리 언급하자면 카프카는 고가용성을 위..
개발자도 비즈니스 참여를 (번역) 루비에서 상속을 피하는 방법 을 읽고. (링크 유실) 요즘 '객체 지향 이란 무엇일까?' 라는 원론적인 질문에 꽂혀 있어서 그런지, 굉장히 흥미를 일으키는 제목의 글이었습니다. 저는 2년간 자바만 해서 루비를 전혀 모릅니다. 그래서 읽으면서 어림짐작으로 루비 소스를 자바 소스로 뇌컴파일 해가며 읽었는데 역시나 재밌었습니다. 상속이 아닌 위임으로 이 글은 제목 그대로 '상속을 피하기 위한'에 대한 솔루션을 제공하고 있습니다. 상속(확장)이 아닌 위임을 통해서 말이지요. 템플릿 메서드 패턴이냐 스트래티지 패턴이냐로 구분지어 볼 수도 있을 것 같아요. 물론 절대적으로 상속보다는 위임이 좋다는 건 아닙니다. 상황에 따라 충분히 선택의 여지가 있습니다. 이 글의 예에서는 스트래티지 패턴이 더 적합하다고 ..
객체지향 개발 5대 원칙 : SOLID 좋은 글 그간 SOLID 원칙에 대한 설명을 굉장히 많이 보았는데, 최근에 굉장히 명쾌하게 설명한 글을 발견 !객체지향 개발 5대 원리: SOLID클린 소프트웨어 : 애자일 원칙과 패턴, 그리고 실천 방법을 읽던 중에.
넷플릭스 마이크로 서비스 가이드 출처 및 링크 : https://www.youtube.com/watch?v=OczG5FQIcXw&feature=youtu.be
모듈화에 대하여 문득 모듈화에 대해서 생각하다가, 의식의 흐름대로 작성하였습니다. 문맥도 두서도 개연성도 없습니다. 대단한 내용은 더더욱 없습니다 ! : ) 의식의 흐름 #0.모듈화를 생각하기에 앞서 나의 코드를 보자.눈앞에서 흩날리고 있는 코드들 속에서 공통적인/반복적인 부분을 뽑아 내서 중복부터 제거하고. haha. DRY ! 의식의 흐름 #1.개발자는 역할과 책임을 특징 짓고 그것에 따라 적절히 분리할 수 있어야 해. 관찰력이 있어야해.왜냐하면? 무엇인가를 찾아낼 수 있어야 해.우리가 찾아야 할 대상은 다음과 같은 일련의 문장들로 표현될 수 있어.무엇 ?= 클라이언트에게 알리지 말아야 할 비밀= 클라이언트가 알 필요가 없는 사항= 변경될 가능성이 높은 부분= 복잡하고 어려운 부분= 세부적인 사항들 및 구현= 실제 작업해..
MySQL 원격 접속용 계정 생성 연습 프로젝트를 위해 AWS EC2에 JDK, Tomcat, MySQL 등을 세팅하고 있는데, 프로젝트 서버 세팅을 해본 적은 처음이라 애를 먹으며, 폭풍 구글링을 했다. 내 로컬 PC(혹은 외부)에서 원격으로 MySQL 접속을 위해 몇가지 설정이 필요 하다는 것을 알았다. 1. 원격 접속용 MySQL 계정. 1CREATE USER 'name'@'ip' IDENTIFIED BY 'password';cs name : 사용자 계정 ip : 출발지 IP ( Any : % , 특정 대역 : xxx.xxx.%)password : 비밀번호 2. 해당 계정에 필요한 권한을 준다. 나는 모든 권한을 부여 했다. 123GRANT ALL PRIVILEGES ON *.* TO 'name'@'ip' WITH GRANT OPT..
enum 수정 후 deploy 시 문제점. 필요에 의하여 enum을 수정할 일이 있었다.즉, enum에 값을 추가한 뒤, 해당 값을 사용하는 로직을 배포했다. 그런데 갑자기 Error가 엄청나게 올라오기 시작했다. 로직의 결함은 전혀 없었는데 도대체 왜 Error가 발생 했을까? 이 2가지 상황을 고려하면 내가 발생시킨 Error는 당연한 것으로 보인다. 내가 배포한 서비스는 다수의 서버에서 실행된다.다수의 서버를 동시에 배포하면 서비스에 차질이 있므로, 순차적으로 배포했다. 다음의 예를 보면 알 수 있다. 기존의 서비스에서 한 enum 클래스가 아래와 같이 존재할 때, [Old Enum]12345public enum Color { BROWN, YELLOW, WHITE}cs이 Enum을 아래와 같이 변경한다. [New Enum]123456publ..