1. 항해 99의 연말 이벤트, 깃허브 잔디 기부 캠페인 연말을 맞이하여, 뜻깊은 캠페인에 참여하며 따뜻한 나눔을 실천했습니다.바로 항해99의 인데요!평소 깃허브에 열심히 쌓은 잔디를 1개당 100원으로 환산해 저소득층 아이들에게 코딩 교육을 지원하는 국제 비영리단체에 기부하는 멋진 프로젝트입니다.https://hanghae99.spartacodingclub.kr/campaign 개발자 커리어 개척 캠프 항해99 | 잔디 기부 캠페인세상의 성장에 기여하세요hanghae99.spartacodingclub.kr 2. 참여 방식참여 방법도 간단했습니다.버튼 한 번으로 기부에 동참할 수 있었고,덕분에 제 작은 참여가 큰 의미를 더할 수 있었습니다.특히, 목표 금액인 2천만원이 모이면 더 많은 아이들에게 희망을..
전체 글
1. PrometheusFrom metrics to insightPower your metrics and alerting with the leadingopen-source monitoring solution. 메트릭으로부터 인사이트를 얻으라.Prometheus는 오픈소스다.https://prometheus.io/ Prometheus - Monitoring system & time series databaseAn open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.prometheus.io 2. 메트릭..
1. 모니터링이란? 모니터링은 시스템의 상태나 변화를 지속적으로 관찰하고 기록하는 것이다. 개발이 끝나면 개발자의 할 일이 끝날까? 전혀 그렇지 않다. IT 서비스에서 모니터링은 시스템의 안정성과 성능을 보장하기 위해 필수적인 요소로, 장애 상황이 발생했을 때 곧바로 처리할도록 돕는다. 만약 장애가 발생했는데 모니터링 시스템을 갖추지 않고 있다면? ... 2. Spring Actuator Spring Actuator는 애플리케이션의 운영 단계에서 필요한 모니터링과 관리 기능을 제공한다. 흔히 말해, "프로덕션 준비 기능"을 미리 만들어 두어 개발자의 짐을 덜어주는 고마운 존재인 것이다. 주요 특징으로는 애플리케이션의 상태, 메트릭, 로그 등 다양한 운영 정보를 제공한다. 마이크로미터, 프로메테우스, 그라..
1. 물류 관리 및 배송 시스템을 위한 MSA 기반 플랫폼 개발 MSA(Microservices Architecture) 기반의 시스템을 설계하고 구현한다.MSA 애플리케이션을 구성하면서 실무에서 발생할 수 있는 다양한 상황을 경험해본다.API 연동, 데이터 무결성 유지, 서비스 간 통신의 신뢰성을 확보하는 방법에 대해 집중적으로 고민한다.Gemini API를 사용하여 AI를 활용하는 경험을 쌓는다. 2. 인프라 설계서 auth servicedelivery service(배송, 배송 경로 기록, 배송 담당자)hub service(허브, 허브간 이동 정보)product service(업체, 상품)order service(주문)notification service(Gemini AI, Slack) 3. ERD..
1. 자바에서 동일성과 동등성 이해하기 객체 지향 프로그래밍에서 동일성(Identity)과 동등성(Equality)은 객체를 비교하는 두 가지 중요한 개념이다. 2. 동일성(Identity) 동일성은 두 객체가 메모리 상에서 같은 위치를 차지하고 있는지, 즉 같은 객체인지를 판단한다.자바에서는 `==` 연산자를 사용하여 동일성을 확인한다. 예를 들어,Integer a = new Integer(1);Integer b = a;System.out.println(a == b); // true 이 경우 a와 b는 동일한 객체를 참조하므로 true를 반환한다. 3. 동등성(Equality) 동등성은 두 객체의 내용이나 상태가 같은지를 비교한다.자바에서는 `equals()` 메소드를 사용하여 동등성을 확인한다. 예..
1. 객체 비교의 일관성 equals()가 true를 반환하는 두 객체는 반드시 같은 hashCode 값을 반환해야 한다.만약, equals()가 true를 반환하는 데 hashCode 값이 다르다면, 예상치 못한 결과가 발생할 수 있다.대표적인 예로, 해시값을 사용하는 HashSet, HashMap에서 문제가 발생할 수 있다. 2. equals()와 hashCode()의 동작 순서 2 - 1. HashMap 에서 데이터가 추가될 때추가되는 데이터의 hashCode()의 반환 값이 HashMap에 존재하는지 비교한다.같은 값이 있다면, equals()를 통해 true가 나오는지 비교한다.true이면 동등한 객체로 판단한다. 따라서, equals() true가 나오는 동등한 객체라고 하더라도 hashC..
1. @ColumnDefault만 붙이면 자동으로 default 값이 저장될 줄 알았다고요 User라는 엔티티가 있다. 기본적인 필드들이 있다. package com.spring.dozen.auth.domain.entity;import com.spring.dozen.auth.domain.enums.Role;import jakarta.persistence.*;import lombok.*;import org.hibernate.annotations.ColumnDefault;@Getter@NoArgsConstructor(access = AccessLevel.PROTECTED)@AllArgsConstructor(access = AccessLevel.PRIVATE)@Builder(access = AccessLeve..
1. Redis란? Redis(REmote Dictionary Server)는 인메모리 데이터 구조 저장소이다.Key-Value 형태의 방식으로 데이터를 저장한다.데이터를 RAM에 직접 저장하므로 매우 빠른 읽기/쓰기 성능 2. 인메모리 데이터베이스의 필요성일반적으로 데이터베이스하면, 관계형 데이터베이스가 대표적이다. 관계형 데이터베이스의 주된 목적은 HDD, SSD 같은 파일 시스템에 데이터를 저장함으로써 서비스가 종료되어도 데이터를 안전하게 보관하는 것이다. 파일 시스템에 데이터를 저장하다보니, 데이터를 쓰거나, 읽을 때 속도가 느릴 수밖에 없다. 특정 서비스는 빠른 응답을 요구하기도 하고, 대규모 시스템에 경우 데이터베이스에 부하가 급격히 늘어날 수도 있는데, 인메모리 데이터베이스를 사용하면 데이터..