전체 글 242

AWS 네트워크 구성

1. 기본 개념 및 용어라우팅 테이블라우팅 테이블은 패킷이 목적지로 전달되기 위해 거쳐야 할 경로 정보를 저장한 테이블이다. 이 테이블을 통해 네트워크 장비는 다음에 어떤 경로로 데이터를 전송할지 결정한다.서브넷 (Subnet)전통적인 네트워크에서 서브넷은 동일한 네트워크 상의 장비들이 라우터와 같은 중개 장치를 거치지 않고 직접 통신할 수 있도록 분리한 소규모 네트워크이다. 서브넷은 서브넷 마스크를 사용해 네트워크 범위를 구분하며, 이를 통해 내부와 외부 네트워크를 논리적으로 분리할 수 있다.CIDR (Classless Inter-Domain Routing)CIDR 표기법은 IP 주소와 서브넷 마스크를 결합해 네트워크 범위를 지정하는 방식이다. 이를 통해 private 또는 public IP 대역을 유..

빅뱅 방식 vs 이터레이션 방식

1. 빅뱅 방식빅뱅 방식은 전체 시스템을 한 번에 전면적으로 변경하는 접근 방법이다. 초기 계획에서는 단기간 내에 모든 구성요소를 개편함으로써 빠른 변화를 기대하지만, 실제 적용 단계에서는 여러 가지 문제가 동시에 발생할 가능성이 높다.예시한 팀이 1년간 전면 개편을 목표로 개발에 착수하였다. 초기에는 “1년 동안 열심히 개발하면 모든 것을 한 번에 바꿀 수 있다”는 기대감이 팽배하였다.그러나 실제 적용 단계에 들어서자 “이 방식으로 진행하면 시스템 안정성이 우려된다”는 불안감이 확산되었고, 검증 과정에서 추가 6개월이 소요되었다.배포 단계에서는 마이그레이션 문제로 다시 6개월이 추가되었으며, 최종적으로는 롤백 절차에 1년이 더 소요되는 상황에 이르렀다.결과적으로 원래 계획된 1년이 3년으로 늘어났으나,..

데이터 일관성 문제 회고

팀 프로젝트 일정 관리에서의 데이터 일관성 유지 회고프로젝트를 진행하면서 겪은 가장 큰 도전 중 하나는 팀 프로젝트 기간과 개별 일정 간의 일관성 문제였습니다. 우리 서비스는 단순 피드백을 넘어서 대학생들이 팀 내에서 자유롭게 일정과 할 일을 관리하며 능동적으로 소통할 수 있도록 설계되었는데요, 그만큼 비즈니스 로직에 따른 세밀한 제약 조건을 고려해야 했습니다. 비즈니스 로직의 핵심 요구사항팀 프로젝트 기간 수정: 오직 팀장만 프로젝트 기간을 수정할 수 있습니다.일정 추가: 팀원 누구나 일정을 추가할 수 있습니다.팀-일정 관계: 팀 프로젝트 기간은 반드시 모든 일정을 포함해야 합니다.이러한 제약은 우리 서비스가 팀장에게서 탑-다운으로 내려오는 단순한 피드백 시스템이 아니라, 팀원들이 스스로 일정 관리 및..

Grafana

그라파나소개대시보드 확인 툴메트릭 DB를 한눈에 보게 해주기 위한 대시보드프로메테우스의 데이터를 조회해서 그래프로 표시초기 id, 비밀번호: admin그라파나 - 프로메테우스 연동connections -> data sources 찾기데이터 소스에 prometheus 추가그라파나 구조대시보드큰 틀패널대시보드 안에 모듈처럼 들어가는 컴포넌트visualization 정보를 보여준다.우측에 있는 설정으로 패널 정보 수정 가능standard options보여지는 정보의 타입 지정 가능보여지는 정보의 형식 지정 가능쿼리해당 패널에 띄울 데이터를 정하는 곳Builder클릭으로 사용가능한 쿼리 생성기code쿼리를 직접 입력해서 사용하는 방식하단의 add query로 여러 쿼리 추가 가능options해당 쿼리의 패널 내..

Prometheus

소개메트릭을 보관할 DB꾸준히 마이크로미터에서 메트릭을 받아와 저장함프로메테우스 아키텍처 pull metrics데이터를 당겨옴Prometheus server프로메테우스의 서버, 두뇌Node당겨온 데이터를 저장하는 저장소PromQL프로메테우스(DB)에 저장된 데이터를 조회하기 위한 쿼리그라파나와 같은 툴이 사용함Alertmanager프로메테우스가 제공하는 알림 툴프로메테우스는 그 자체로도 DB만큼 방대하다책으로 공부해야 할만큼 방대함추가적인 학습이 필요함따로 알아보면서 공부할 것보안 및 개인정보 보호에서 차단 해제해줘야 함기본 포트는 9090프로메테우스 설정 방법2가지 설정이 필요함애플리케이션 설정프로메테우스가 애플리케이션의 메트릭을 가져갈 수 있도록애플리케이션에서 프로메테우스 포멧에 맞추어 매트릭 만들기..

Micrometer

전투에 실패한 지휘관은 용서할 수 있지만, 경계에서 실패하는 지휘관은 용서할 수 없다개발 하고 끝내버리면, DevOps 경험, 좋은 품질, 유지보수가 사라진다.경계는 확실하게 해라개발도 하고, 모니터링도 구축해보고, 해야 한다.메트릭을 보는 이유정확한 값을 확인하기 위해?X값의 추세를 보기 위해?O큰 그림에서, 흐름이 어떻게 흘러가고 있는지 파악마이크로미터란?표준 측정 방식을 정한 인터페이스"애플리케이션 매트릭 파사드"애플리케이션의 매트릭(측정 지표)을 마이크로미터가 정한 표준 방법으로 모아서 제공스프링부트 액츄에이터는 마이크로미터를 기본으로 내장해서 사용개발자는 마이크로미터가 정한 표준 방법으로 매트릭을 전달하면 된다마이크로미터는 이미 지표 수집 기능을 이미 만들어서 제공오토컨픽으로 자동으로 등록마이크..

성장의 3단계 - 2025년 2월 2주차 회고

불안기새로운 지식을 접하는 단계자신의 부족함에 자존감이 깎이는 시기실제로 이 감정을 피하기 위해 행동으로 옮기면, 성장기로 진입하게 된다.성장기새로운 지식을 습득하는 단계가장 많이 능력적으로 성장하게 된다.하지만, 지적 허영심에 빠질 수 있음에 주의해야 한다.지적 허영심에서 빠져나오고, 실제로 활용하게 될 때, 안정기로 진입하게 된다.안정기내 자신의 실력을 실제로 활용하는 기간세상에 자신이 배운 이치를 실제로 자신감을 갖고 활용하는 상황일반적으로 처음 진입할 때 우매함의 봉우리를 겪게 된다.알지 못하는 새로운 지식을 접했을 때, 불안기로 진입하게 된다. 논리적 사고 방법장단점 분석장점좀 더 많은 경우의 수 고려 가능단점현재의 분석이 완벽하다는 가정이 들어감분석 마비 가능성이해득실 분석장점지금 견해가 확실..

2025년 2월 1주차 공부 내용 정리

DDD바운디드 컨텍스트 vs 연관관계바운디드 컨텍스트도메인 별 개념의 집합Depth로 표현소유권 개념Aggregate Root 가 최상위 개념하위 모든 리소스를 관리함이대로 RESTful 하게 API 설계 가능연관관계1:1, 1:n, n:1, n:m관계로 표현소유권 개념이 있지만, 바운디드 컨텍스트랑은 별계임도메인 객체 탐색 vs 직접 Repository 조회도메인 객체 탐색도메인 로직 내에서 객체를 자연스럽게 탐색할 때 사용검증, 쓰기 작업 시 사용검증 로직 별로 필요한 애그리거트 루트의 하위 애그리거트 fetch join도메인 로직이 객체지향적으로 상태를 관리할 수 있도록이때만 양방향 연관관계 사용직접 Repository 조회애그리거트 루트에서 객체를 조회할 때 사용단순 읽기 작업 시 사용도메인 객체..

CS Repository 2025.02.08

2025년 1월 회고

시간 관리남들의 평가에, 진짜 놓치면 안되는 것을 놓치면 안됨.실수가 예방이 아닌 관리의 대상이듯이, 기술부채도 예방이 아닌 관리의 대상이다.기술부채가 하나도 없다면, 지나치게 꼼꼼히 하느라 생산성이 떨어지진 않았는지 검사기술부채가 너무 많다면, 생산성만 추구하느라 유지보수가 힘들어지진 않았는지 검사2시간 30분 → 30분 휴식2시간 → 30분 휴식1시간 30분 → 30분 휴식1시간 → 30분 휴식하루끝!어떤 방식으로 설계에 접근해야 하나요구사항 분석Use Case 파악Use Case Diagram 작성System Sequence Diagram 작성도메인 모델 작성객체 내 존재하는 상태 파악자료구조 정의Value Object와 진짜 Object 구분PreCondition / PostCondition 작성..

HTTP와 네트워크

HTTP-WEBWeb : HTML이라는 문서 형태와 HTTP라는 문서 전송 프로토콜, URL로 문서의 위치를 표시하는 시스템HTTP (Hypertext Transfer Protocol)웹에서 데이터를 주고받는 방식 (Server - Client 모델)클라이언트와 서버 사이에서 클라이언트가 메시지(요청, Request)를 주고, 서버가 메시지를 받아서 응답(Response)을 주는 형태의 통신 방법URI(Uniform Resource Identifier)Uniform: 리소스 식별하는 통일된 방식Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)Identifier: 다른 항목과 구분하는데 필요한 정보HTML (Hyper Text Markup Language)하이퍼미디어 포맷XML을 바탕..

Java Thread Model 의 역사

Java 1.0~1.4: 초기 스레드 모델Thread 클래스와 Runnable 인터페이스 도입기본적인 스레드 생성 및 실행 메커니즘이 제공됨.synchronized, wait(), notify(), notifyAll() 메서드를 사용한 동기화가 가능.초기 문제점동기화 블록의 관리가 어려움.스레드 풀과 같은 고급 API 부재.비효율적인 스레드 관리.Java 5 (2004): java.util.concurrent 패키지 도입새로운 기능Executor Framework스레드 관리를 단순화하는 스레드 풀 및 작업 실행 프레임워크.ExecutorService executor = Executors.newFixedThreadPool(4);executor.execute(() -> System.out.println("T..

책임감, 그리고 리더십

내가 생각하는 리더십의 본질은?다른사람에게 동기부여를 해줄 수 있는 능력.나보다 잘하는 사람들 사이에서, 어떻게 방향을 잃지 않고 가야 하는가?내가 할 수 있는 리더십은 무엇인가?그동안의 "내가 다 해결할게, 날 믿어!" 식 리더십은 더이상 불가능하다.현실적으로 어떤 마인드셋을 지니고 앞으로 나아가야 하는가?가능성 열어두고, 상황 파악자아도취(현재 오판, 미래 확신) + 책임 추구 + 만족 추구자아도취(현재 오판, 미래 확신) + 책임 추구 + 실적 추구장기적 시야(현재 인정, 미래 확신) + 책임 추구 + 만족 추구장기적 시야(현재 인정, 미래 확신) + 책임 추구 + 실적 추구생존(현재 인정, 미래 불안, 단기적 시야) + 책임 추구 + 만족 추구생존(현재 인정, 미래 불안, 단기적 시야) + 책임 ..

개인적 공간 2025.01.06

[함께 자라기] 자라기.

함께 자라기 - 김창준김창준님의 "함께 자라기"를 읽고, 내용을 재구조화 & 정리한 글입니다.자세한 내용은 해당 책을 참고해주세요.다음과 같이, 나에게 던지는 질문을 발전시켜 나가보자.내가 정말 잘할 수 있을까?내가 정말 자랄 수 있을까? 우리가 정말 함께 자랄 수 있을까?우리가 정말 매일매일 함께 자랄 수 있을까?"야생학습" 개념의 등장학교 학습은 로드맵과 정답이 있다.하지만 세상은 변수가 매우 많다.정답이 없는, 상황마다 달라지는 답.단순한 정답/오답만으로 결과가 평가되지 않음결정을 내리는 속도도 중요하고, 목표가 바뀌기도 한다.그래서 필요한 것이 야생 학습믿고 따르지 않고, 스스로 생각하는 방법세상을 내 기준대로 사는 방법"도인을 따라가서 시키는대로 훈련받았더니 고수가 됐다!" 같은건 현실에선 불가..

개인적 공간 2024.12.27

트레이드오프

모든 것에는 Trade-Off가 있다.성숙한 소프트웨어 아키텍트는, 완벽한 설계가 없다는 것을 인정하고, 현재 상황에 맞는 최선의 아키텍처를 선택한다.내 급한 성격은, 빠른 상황 판단과 정확한 결단 및 추진을 가능케 한다.모두가 행복하지는 않더라도, 최고의 결과물을 뽑아내는 역량.내 예민한 성격은, 남들이 보지 못하는 숨겨진 패턴을 보게 한다.섬세함, 요구사항 파악, 장기적 안목, 배려.내 잔소리하는 성격은, 누구보다 무거운 진지함과 책임감을 이끌어낸다.깊은 공감, 이해, 책임사람은 모두 독립적 Object이다.모든 사람은 독립적인 존재이며, 나에게 상처를 주는 사람과 치유를 주는 사람은 별개의 존재다.감정 때문에 슬퍼하는 것은 내 선택이고 책임이다.이 감정 자극에 중독된 것은 아닌가?감정을 통제하고, ..

개인적 공간 2024.12.24

[2213] 트리의 독립집합

[2213] 트리의 독립집합문제를 천천히 읽어보자.독립집합이란, 모든 정점 쌍이 인접하지 않은 정점들의 집합이라고 한다. 간단하게 그림을 그려보면, 다음과 같은 예시를 들 수 있다.그리고 다음과 같은 애들은 독립집합이 아니다.여기서 문제는 한가지 새로운 정의를 내린다.독립집합의 크기란? 독립 집합 내 정점들의 가중치의 합정점의 가중치는 정수로 주어지고, 10000 이하로 제한되어 있다.우리의 목표는 독립집합을 이루는 경우의 수 중, 가장 큰 "집합 내 원소의 가중치의 합"을 구하는 것이다.문제에 그래프 형태가 트리 구조로 되어있다고 하는데, 여기에서 우리는 중요한 관찰을 할 수 있다.트리구조로 되어있다는 것은,정점 A가 어떤 독립 집합 S에 포함/제외되는 것이 재귀적으로 자기 자신에게 영향을 주는 "사이..

PS/Baekjoon OJ 2024.12.03

[1475] 방 번호

[1475] 방 번호어떠한 사람(기능) 이 필요한가?항상 설명이 너무 복잡하다면, 일단 문제를 단순화해서 보자. → 조건을 몇개 제거해보자.(6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다는 조건을 제외해보자.)만약, 122 라는 숫자를 만들어야 한다면, 플라스틱 세트는 2세트가 필요할 것이다(2를 2개를 수급하려면, 플라스틱 세트 2세트가 필요할 것이고, 3~9까지 각각 숫자 2개씩은 모두 버려질 것이다. 아깝네)만약, 9999라는 숫자를 만들어야 한다면, 플라스틱 세트는 4세트가 필요할 것이다.(9를 4개를 수급하려면, 플라스틱 세트는 4세트가 필요할 것이고, 9를 제외한 나머지 숫자들 각 4개들은 모두 버려질 것이다.)우리는 여기서, 다음과 같은 결과를 찾을 수 있다.가장 ..

PS/Baekjoon OJ 2024.12.03