미터 생성마이크로미터에서 Meter를 생성하는 두 가지 방법이 있습니다:플루언트 빌더: 상세한 설정이 필요할 때축약 구문: 간단하게 생성할 때플루언트 빌더 vs 축약 구문플루언트 빌더는 라이브러리에서 사용하기 좋고, 축약 구문은 마이크로서비스에서 간결한 코드를 유지할 때 적합합니다.기본 단위 정보는 모니터링 차트에서 가독성을 높이는 데 도움이 됩니다. 예를 들어 '2147483648 바이트'보다 '2GB'가 훨씬 보기 좋죠.모니터링 시스템이 기본 단위 정보를 지원하지 않더라도 그라파나(grafana) 같은 차트 도구를 이용하면 사용자 인터페이스를 통해 수동으로 단위를 선택할 수 있고, 단위에 따라 자동 조절 기능을 수행합니다.코드 예제플루언트 빌더 방식Counter counter = Counter.bui..
마이크로미터의 미터 레지스트리Micrometer는 자바로 제작된 차원형 메트릭 수집 라이브러리로, 대부분의 주요 모니터링 시스템을 지원합니다.Micrometer에서 Meter는 애플리케이션의 측정 결과를 수집하는 인터페이스이며, 이 측정 결과 각각이 메트릭이 됩니다. MeterRegistry가 이 미터들을 생성하고 보유하며, Micrometer는 다양한 모니터링 시스템에 맞춰 MeterRegistry를 각각 구현하고 있습니다.Micrometer가 지원하는 레지스트리 구현 라이브러리는 Prometheus, Atlas 등을 포함하며, 메이븐 센트럴과 제이센터에서 다음과 같은 방식으로 사용할 수 있습니다:io.micrometer:micrometer-registry-Prometheus용 레지스트리 생성 예시Me..
애플리케이션 메트릭분산 시스템은 서로 상호작용하는 수많은 마이크로 서비스로 구성됩니다. 시스템 복잡도가 높아질 수록 시스템을 관찰하는 역량의 중요성이 더욱 커집니다. 애플리케이션 메트릭 관련 포스팅에서는 분산 시스템의 성능을 측정하고 사전에 위험을 알리는 방법에 대해 다룹니다.모든 조직은 반드시 모니터링 솔루션을 하나 이 상 선정해야 하는데 규모나 복잡도에 구애받지 않고 조직에 맞는 솔루션을 찾을 수 있을 정도로 시장은 충분히 성숙해졌습니다.블랙박스 vs 화이트박스 모니터링메트릭 수집 방식은 관찰 가능한 요소가 무엇인지에 따라 두 가지로 분류합니다.블랙박스수집기가 입출력을 관찰할 수 있으나 내부 메커니즘은 알 수 없음ex) HTTP 요청/응답프로세스를 가로채거나 감싸는 방식으로 대상을 측정화이트 박스수집..
전달 (Delivery)전달 파이프라인 개선은 기존 시스템 장애 가능성을 줄이고, 문제 발생 시 빠른 롤백이 가능하게 함.CI(지속적 통합) 와 CD(지속적 전달) 의 경계는 흐릿하지만, 개념적으로 명확히 구분해야 함:CI는 산출물을 저장소에 저장할 때 종료CD는 그 시점부터 시작목적의 차이:CI: 빠른 피드백, 자동 테스트, 병합 장려CD: 릴리스 주기 단축, 보안 준수, 유연한 배포트래픽 관리복원력은 장애를 예측하고 보상하는 구조에서 나옴가용성 모니터링: 장애 발생 지점 파악디버깅 가능성 모니터링: 장애 원인 분석전달 자동화: 증분 릴리스에 대한 장애 억제트래픽 관리 패턴은 실시간으로 장애에 대응할 수 있게 돕는 기술모니터링 시스템 > 테스트 자동화테스트는 완전하지 않으며, 커버리지 100%는 실현 ..
모니터링1. 서비스 가용성 측정 수단메트릭: 수치 기반, 시계열 데이터로그: 세부 이벤트 기록분산 추적: 요청 흐름 추적2. 가용성 모니터링개념가용성 신호: 시스템 상태를 거시적으로 판단 (ex. 자원 소비량, 판매량, 스트리밍량 등)SLI (서비스 수준 지표): 측정 지표SLO (서비스 수준 목표): SLI의 허용 범위SLA (서비스 수준 협약): 계약 수준으로, 보통 SLO보다 완화된 기준핵심SLA 위반 가능성 감지 및 선제적 경고가 중요메트릭은 값싸고 전체적인 활동 파악에 유리 (전수 데이터도 가능)단점: 개별 요청 추적에는 부적합 → 전체 흐름 파악용3. L-USE 모델 (핵심 가용성 신호)Latency (지연 시간): REST 엔드포인트, 최대 레이턴시 중요Utilization (사용률): CP..
애플리케이션 플랫폼마이크로서비스는,애플리케이션이 여러 컴포넌트로 분리각기 다른 팀이 독립적으로 개발 및 배포소프트웨어 개발 속도가 빨라지고 대규모 릴리스 일정을 수립하고 조율할 필요성 감소각 서비스를 담당하는 팀은 독립적이며 자신의 고객(내/외부)에게 필요한 비즈니스 요건에 대응 가능각기 다른 클라우드 리소스에 수평적으로 조절된 규모로 다중 배포되어 네트워크상의 다양한 프로토콜을 이용해 서로 통신데이터 전송과 통신량으로 추가 비용과 레이턴시 발생 -> 사용자 경험을 저하시킬 수 있음서로 독립적으로 릴리즈되지만 의도치 않게 서로 영향을 미칠 수 있음이런 특징을 가집니다.이렇게 분산된 시스템 관리를 위해 새로운 관행(convention), 도구, 엔지니어링 문화가 필요합니다.플랫폼 엔지니어링 문화1. 표준화..
최근 들어 서비스의 안정성에 대해 깊이 고민하게 되었습니다. 기능 개발뿐 아니라 장애 대응, 운영 효율성, 시스템 복원력과 같은 문제들이 점점 더 중요해지고 있기 때문입니다. 특히 팀과 시스템의 규모가 커질수록 '어떻게 하면 더 안정적으로 서비스를 운영할 수 있을까?'라는 질문은 피할 수 없는 과제가 되었습니다. 이러한 고민 속에서 팀 리더가 추천해 준 자바 마이크로서비스를 활용한 SRE라는 책을 접하게 되었습니다.이 책은 단순한 SRE 이론서가 아니라, 실제 자바 마이크로서비스 환경에서 SRE 개념을 어떻게 적용할 수 있을지에 대해 다양한 사례와 함께 소개하고 있습니다. 내용을 읽다 보니 저희 조직에도 충분히 참고할 만한 지점이 많았고(이미 많이 적용되어 있다는 것도 깨달았고), 책에서 얻은 인사이트를..

회사 블로그에 작성한 글을 제 개인 블로그에도 함께 올립니다.원본은 여기서 확인하실 수 있습니다. 삼쩜삼은 자비스앤빌런즈에서 제공하는 서비스로, 사용자들이 간편하게 세금을 환급받을 수 있도록 돕습니다. 이를 위해 먼저 결정 세액을 계산하고, 최종 환급액을 산출하는 과정이 필요한데, 이 때, 가장 중요한 요소 중 하나는 정확한 계산입니다. 특히, 세금과 관련된 모든 금액을 처리하는 과정에서 발생하는 작은 오차조차 법적 문제나 금전적 손실로 이어질 수 있어, 높은 정밀도가 요구됩니다. 한화(원)와 같은 통화는 소수점이 필요 없지만, 세율 계산 등 소수점 이하의 복잡한 연산을 처리할 때는 부동소수점(Floating Point) 방식을 사용하게 됩니다. 그러나 이 방식은 소수점 이하의 값을 정확히 표현하지 못해..
요즘 크롬 업데이트가 너무 빈번하게 되는 것 같아서 업데이트를 자동으로 하지 않도록 설정하는 방법을 알아보았습니다. 저는 폰에서 badge 표시도 싫어해서 카톡이나 이메일, 그 외 모든 알림도 빨리 제거해야하는 성격인데 크롬창에 자꾸 업데이트 알림이 떠있어서 너무 거슬려서 방법을 찾아보았는데 매우 간단하네요. 터미널에 아래 명령어를 입력하면 됩니다. defaults write com.google.keystone.agent checkinterval 0
본 포스팅은 원글을 번역한 글입니다. "나는 FAANG과 같은 대규모 기업과 스타트업과 같은 작은 기업에서 뛰어난 엔지니어들과 함께 일한 경험이 있습니다. 이 중 일부 엔지니어들은 자신의 회사를 시작하거나 웹을 변화시키는 개발을 주도했으며(예: Vercel), 오늘날 큰 기술 기업에서 수십 억 달러 가치의 프로젝트를 주도하고 있습니다. 내가 그들과 일하면서 주목한 것은 그들이 생산한 코드에서 일부 중복되는 습관을 가지고 있다는 것입니다." 컴퓨터가 아닌 사람을 위한 코드를 작성하라 "어떤 바보도 컴퓨터가 이해할 수 있는 코드를 작성할 수 있습니다. 좋은 프로그래머는 인간이 이해할 수 있는 코드를 작성합니다." - 마틴 파울러 코드는 컴퓨터뿐만 아니라 인간을 위한 것입니다. 코드는 팀의 엔지니어들을 위한 ..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise). You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation. Example 1: Input: matrix = [[1,2,3],[4,5,6],[7,8,9]] Output: [[7,4,1],[8,5,2],[9,6,3]] Example 2: Input: m..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given the root of a binary tree, flatten the tree into a "linked list": The "linked list" should use the same TreeNode class where the right child pointer points to the next node in the list and the left child pointer is always null. The "linked list" should be in the same order as a pre-order traversal of the binary tree. Example 1: Input: root = [1,2,5,3,4,..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right, which minimizes the sum of all numbers along its path. Note: You can only move either down or right at any point in time. Example 1: Input: grid = [[1,3,1],[1,5,1],[4,2,1]] Output: 7 Explanation: Because the path 1 → 3 → 1 → 1 → 1 minimizes the sum. Example 2: Inpu..
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem You are given the head of a linked list. Delete the middle node, and return the head of the modified linked list. The middle node of a linked list of size n is the ⌊n / 2⌋th node from the start using 0-based indexing, where ⌊x⌋ denotes the largest integer less than or equal to x. For n = 1, 2, 3, 4, and 5, the middle nodes are 0, 1, 1, 2, and 2, respectively...
소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem We are given an array asteroids of integers representing asteroids in a row. For each asteroid, the absolute value represents its size, and the sign represents its direction (positive meaning right, negative meaning left). Each asteroid moves at the same speed. Find out the state of the asteroids after all collisions. If two asteroids meet, the smaller one wi..
- Total
- Today
- Yesterday
- Spring Boot Tutorial
- 스프링 부트 애플리케이션
- r
- 스프링 부트
- JPA
- 클린 아키텍처
- 알고리즘
- 스프링 부트 회원 가입
- Linux
- 함께 자라기
- @ManyToOne
- proto3
- spring boot app
- Java
- JSON
- 헥사고날 아키텍처
- Spring Boot
- 스프링 데이터 jpa
- 스프링 부트 튜토리얼
- QueryDSL
- Spring Data JPA
- 스프링부트
- spring boot application
- gRPC
- spring boot jwt
- Spring Boot JPA
- Jackson
- intellij
- leetcode
- 함께 자라기 후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |