최신 글
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 10~ 11장 정리
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 10~ 11장 정리
카테고리 없음
2026.08.30 00:14
10장. 모르면 답답해지는 네트워크 기초네트워크 기초를 모르면서버 장애의 원인이 애플리케이션 코드가 아니라 네트워크 설정에 있을 수 있다.내부 통신에 사용하는 IP와 외부에서 접근할 때 사용하는 IP를 혼동하면 접속 허용 대상을 잘못 지정할 수 있다.서버 개발자가 네트워크를 깊게 알 필요는 없지만, 장애 원인을 찾고 설정 문제를 해결하려면 기본 개념은 알아야 한다.노드, 네트워크, 라우터데이터를 송수신하는 모든 장치를 노드(Node)라고 한다.휴대폰, 노트북, 서버, 네트워크 장비 등이 해당한다.노드가 서로 데이터를 주고받기 위해 연결된 시스템을 네트워크(Network)라고 한다.노드가 네트워크를 통해 전송하는 데이터의 단위를 패킷(Packet)이라고 한다.헤더에는 송수신 정보, 페이로드에는 실제 데이터..
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 7~ 9장 정리
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 7~ 9장 정리
Study
2026.08.15 20:19
7장. IO 병목, 어떻게 해결하지네트워크 IO와 자원 효율서버는 클라이언트, DB, 레디스, 외부 API 등과 네트워크로 데이터를 주고받는다.네트워크 통신은 데이터를 보내는 write()와 받는 read()로 정리할 수 있다.DB에 SELECT 쿼리를 실행할 때도 서버가 쿼리를 전송하고 DB의 응답을 읽는다.입출력이 끝날 때까지 스레드가 기다리는 것을 블로킹이라고 한다.네트워크 연동이 많은 프로그램은 코드 실행보다 IO 대기에 더 많은 시간을 사용할 수 있다.요청마다 스레드를 할당하면 한 스레드가 IO를 기다리는 동안 다른 요청을 처리할 수 있다. 하지만 트래픽과 함께 스레드 수가 늘어나면 자원 효율이 떨어진다.스레드마다 사용하는 메모리가 증가한다.실행할 스레드를 바꾸는 컨텍스트 스위칭이 늘어난다.컨텍..
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 4~ 6장 정리
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 4~ 6장 정리
Study
2026.08.02 23:49
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저)📌 Chapter 04. 외부 연동 장애 대응외부 연동(결제, 알림, 검색, LLM API 등)은 내가 통제할 수 없는 영역이다. 이 장의 핵심은"외부 서비스가 느려지거나 죽어도, 내 서비스 전체가 같이 죽지 않게 만드는 것"이다.1. 타임아웃 (Timeout)가장 기본이면서 가장 자주 놓치는 설정. 타임아웃을 설정하지 않으면 스레드가 무한정 대기하게 되고,그 스레드들이 쌓이면 스레드 풀이 고갈되어 정작 멀쩡한 다른 요청까지 처리 못 하는 연쇄 장애로 번진다.구분설명권장 범위연결 타임아웃 (Connection Timeout)TCP 연결 자체를 맺는 데 걸리는 최대 대기 시간3초 ~ 5초읽기 타임아웃 (Read Timeout)연결 후 응답을 받..
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 1 ~ 3장 정리
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 1 ~ 3장 정리
Study
2026.07.19 02:39
주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저)Chapter 01. 들어가며1장. 신입 개발자 A의 일화개발자 A는 내부 직원이 사용할 간단한 사이트를 만들었다.얼마안가 오류가 발생한다는 연락을 받았다.개발자 A가 개발 주소에 접근하니 DB에 연결할 수 없다는 오류가 발생한다.일부 코드에서 사용이 끝난 DB 커넥션을 닫지 않은 것이다.// 개발자 A가 작성한 문제의 코드Connection conn = ds.getConnection(); // 커넥션 풀에서 구함try {} catch (Exception e) { ... 에러 처리}// conn.close()가 누락 -> 커넥션 풀에 반환하지 않음DB 커넥션을 사용한 뒤 풀에 반환하지 않았고 그로 인해 커넥션이 누수되었다.결국 풀에 있던 ..
[짠팟] 인프라 개선 방향에 대한 고민
[짠팟] 인프라 개선 방향에 대한 고민
짠팟
2026.04.19 21:05
짠팟 인프라 개선 방향 — 보안과 확장성현재 단일 EC2 구조에서 발생할 수 있는 위험 요소를 분석하고, 트래픽 증가와 보안 위협에 대응하기 위한 AWS 인프라 개선 방향을 정리합니다.1. 현재 아키텍처 구조현재 짠팟의 전체 서버 흐름은 아래와 같습니다. 현재 짠팟은 VPC 내 Public/Private Subnet이 분리된 구조입니다. EC2(Nginx, Spring Boot Blue/Green, Prometheus+Grafana)는 Public Subnet에, RDS는 Private Subnet에 위치하여 외부 직접 접근이 차단되어 있습니다. 단, EC2는 단일 인스턴스로 운영 중이며 단일 AZ(ap-northeast-2a)에 집중되어 있습니다.2. 현재 구조의 위험 요소현재 짠팟은 모든 것이 EC2..
인기 글
이력서2025.07.02 13:47[부하를 견디는 서버의 비밀, Redis] 캐싱(Caching)의 개념 2

이 글은 인프런 딩코딩코의 백엔드 이력서 차별화 전략 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.언제 캐시를 만료시켜야할까? - 캐시 만료 정책앞서 어떤 데이터를 캐싱하면 좋을지 알아봤다.🤔 그렇다면 이렇게 캐싱된 데이터는 언제까지 캐시에 남아 있어야 할까? 한 번 저장된 캐싱 데이터는 계속해서 유효할 수 있을까? 현실의 백엔드 서버에서는 다양한 요청을 처리하는 과정에서 데이터가 지속적으로 생성, 수정, 삭제되며 원본 DB의 내용도 계속해서 변하게 된다.즉, 원본 데이터가 지속적으로 변경되는 상황에서 처음에 캐싱된 데이터가 계속해서 유효하다고 볼 수는 없다. 만약 캐시를 적절히 만료시키지 않거나, 원본 데이터의 변경 사항을 캐시에 반영하지 못한다면캐시 데이터와 원본 DB 간에 불일치가..

주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 10~ 11장 정리
카테고리 없음2026.08.30 00:14주니어 백엔드 개발자가 반드시 알아야할 실무지식 (최범균 저) 10~ 11장 정리

10장. 모르면 답답해지는 네트워크 기초네트워크 기초를 모르면서버 장애의 원인이 애플리케이션 코드가 아니라 네트워크 설정에 있을 수 있다.내부 통신에 사용하는 IP와 외부에서 접근할 때 사용하는 IP를 혼동하면 접속 허용 대상을 잘못 지정할 수 있다.서버 개발자가 네트워크를 깊게 알 필요는 없지만, 장애 원인을 찾고 설정 문제를 해결하려면 기본 개념은 알아야 한다.노드, 네트워크, 라우터데이터를 송수신하는 모든 장치를 노드(Node)라고 한다.휴대폰, 노트북, 서버, 네트워크 장비 등이 해당한다.노드가 서로 데이터를 주고받기 위해 연결된 시스템을 네트워크(Network)라고 한다.노드가 네트워크를 통해 전송하는 데이터의 단위를 패킷(Packet)이라고 한다.헤더에는 송수신 정보, 페이로드에는 실제 데이터..

블로그 3기2026.02.25 15:27Spring Boot Logback 설정과 로그 레벨 가이드

Spring Boot Logback 설정과 로그 레벨 가이드1. Logback을 별도 설정하는 이유Spring Boot는 기본적으로 Logback이 내장되어 있어 별도 의존성 추가 없이 바로 콘솔 출력이 가능합니다. 그러나 기본 설정만으로는 운영 환경에서 필요한 요구사항을 충족하기 어렵습니다. 파일로 저장되지 않고, 환경별 로그 레벨 분리가 안 되며, 포맷도 단순하기 때문입니다.별도 설정이 필요한 핵심 이유는 다음과 같습니다.환경별 로그 레벨 분리. 개발 시에는 상세한 로그가, 운영 시에는 중요한 로그만 출력되도록 구분해야 합니다.파일 로그 저장 및 롤링 정책. 운영 서버에서는 콘솔 로그를 직접 확인하기 어렵기 때문에 파일로 저장해야 합니다. 또한 로그가 무한정 쌓이면 디스크가 꽉 찰 수 있으므로 날짜별..

[DFS] 같은 부류 찾기 유형 정리
알고리즘2025.08.19 10:55[DFS] 같은 부류 찾기 유형 정리

이 글은 인프런 문과생도 이해하는 DFS 알고리즘!-입문편 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다.

99클럽 코테 스터디 9일차 TIL - 백준 2437번 : 저울
그리디2025.04.10 18:2899클럽 코테 스터디 9일차 TIL - 백준 2437번 : 저울

✅ 문제https://www.acmicpc.net/problem/2437N개의 저울추가 주어질 때, 이 추들을 사용해 측정할 수 없는 양의 정수 무게 중 최소값을 구하기.한쪽은 물체, 다른 한쪽은 추를 놓을 수 있다. 즉, 연속적인 N개의 추들로 물체의 무게를 표현하는 저울이다.예) 저울추 3, 1, 6, 2, 7, 30, 1인 경우, 측정할 수 없는 가장 작은 양의 정수 무게는 21✅ 분류그리디 알고리즘정렬 (오름차순)✅ 공부한 내용- 풀이 로직추들을 오름차순으로 정렬sum 변수를 사용해서 현재까지 추들로 만들 수 있는 연속된 무게의 최댓값 변수 저장.각 추를 순서대로 확인현재 추의 무게가 sum+1보다 크다면, sum+1은 만들 수 없는 최소 무게 (정답)그렇지 않다면, 추를 사용하면 범위를 sum ..

스프링 심화 1기
[중간발표] B2B2C SaaS 대기열 서비스
[중간발표] B2B2C SaaS 대기열 서비스
스프링심화1기
2024.10.11 00:30
중간발표 자료  Monorepo를 통해 멀티모듈 구조를 채택했고, 루트 프로젝트에서 각각의 서브 프로젝트를 관리하고versions.properties를 통해 여러 서버에서 사용하는 JWT 같은 의존성의 버전을 통합관리했다.브랜치 전략으로는 main-dev-hotfix-feature로 이슈를 발행한 후 해당 브랜치를 파고, PR과 코드리뷰를 통해 이슈와 브랜치를 닫는 전략을 사용했다. 또한 sprint 단위로 일정을 관리했다.이번 프로젝트에서 기획한 서비스는 B2B2C로, 서비스의 사용자는 대기열 서비스를 원하는 기업의 개발자가 될 것이며, 해당 기업은 엔드포인트 사용자에게 서비스를 제공하는 구조로 이루어져 있다.처음에 각자 개발하고 싶은 부분을 고민하다가, 개발자를 위한 서비스를 만들면 어떨까라는 의견이..
Chapter 5. 팀 프로젝트 2주차 WIL
스프링심화1기
2024.10.07 14:36
Weekly I Learned 2주차 간단 요약- 프로젝트 주제 선정 후 설계 과정 이번 프로젝트에서 Kafka 도입을 통해서 최대한 안정성 있게 데이터처리를 하고자 한다.구현 과정에서 높은 러닝 커브가 있고 이슈가 매번 생길 때 로깅에 대한 전략이 필요한데 이런 경우를 대비해서 이벤트 소싱 패턴을 전략을 사용하려 한다. 이벤트 소싱 패턴 (Event Sourcing Pattern) 이란?해당 패턴의 전략의 기본은 데이터를 저장하는 방법에 대한 정의이다.일반적으로 우리는 데이터를 저장할 때, 최종적인 데이터 값만 저장한다. 하지만 이벤트 소싱 패턴은 해당 과정 속 모든 순간의 이벤트를 저장하는 거라고 생각하면 쉽다!어플리케이션의 모든 상태 변화를 순서에 따라 이벤트로 보관한다.일반유저요청(주문)요청(추가..
Domain Driven Design (DDD)
Domain Driven Design (DDD)
스프링심화1기
2024.09.09 11:03
2024.09.05(금) 특강 정리 1. DDD의 개념과 등장 배경소프트웨어를 설계할 때 고객의 요구사항을 정확히 이해하는 것이 중요하다.요구사항을 잘못 이해하면 잘못된 기능을 만들고 수정하는 것도 어렵다. 그럼 이런 문제는 왜 발생할까?과거에는 주로 기술 중심의 개발 방법론이 사용되었기 때문이다.이러한 방법론은 기술적 요구사항을 중점적으로 다루지만,비즈니스 측면에서 발생하는 다양한 요구사항을 효과적으로 반영하기에는 한계가 있었다. 특히, 비즈니스 전문가와 개발자 간의 소통이 원활하지 않으면, 최종 소프트에어가 비즈니스의 실제 요구를 충족시키지 못할 수 있었다.이러한 문제점들을 해결하기 위해 나온 설계가 도메인 주도 설계(Domain Driven Design)이다. '도메인'이란 소프트웨어로 해결하려는 ..
회고
image