| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- MVC
- 이벤트핸들러등록
- JPA
- SpringLegacy
- 설정세팅
- 디스크i/o
- Ajax
- DDD
- 냄새라도
- MVC요청플로우
- 공통규약
- 로그백
- JDBC
- SEQUENCE
- 클린아키텍처
- model
- 단위테스트
- index
- 전전긍긍
- string
- Transaction
- springsecurity
- 커뮤니티서버
- TDD
- 사면초가
- 문제선택근거
- 이벤트핸들러this
- OOP
- AOP
- 공통기술
- Today
- Total
목록분류 전체보기 (126)
개발이군고구마
0. 들어가며: 네트워크도 결국 파일과 프로세스다이 시리즈의 관통 주제는 "고급 개념은 리눅스 기초의 조합"임. 네트워크도 예외가 아님.소켓은 결국 파일 디스크립터(FD)임 → [기초편]의 "모든 것은 파일이다"와 연결됨.컨테이너 네트워크는 NET namespace + iptables의 조합임 → [프로세스편]과 연결됨.과거 스테이징 환경 디버깅에서 정리했던 OSI 계층(L3/L4/L7), 포워드 프록시, SNAT 개념이 이 글에서 하나의 그림으로 합쳐짐. 아래 순서로 진행함. 1. 패킷의 여정: 애플리케이션에서 NIC까지애플리케이션이 데이터를 보낼 때, 그 데이터는 곧바로 랜선으로 나가지 않음. 커널의 여러 계층을 통과하며 각 계층이 헤더(주소표)를 하나씩 덧붙이는 과정을 거침. 이를 캡슐화(encap..
0. 들어가며: 왜 프로세스를 더 깊이 봐야 하는가앞 글에서 프로세스를 "부모가 자식을 낳는 나무 구조"로 이해함. 이 글은 그 나무의 뿌리(생성 원리)와 울타리(격리·제한)를 파고듦.인프라 엔지니어에게 프로세스 심화가 중요한 이유는 명확함. Docker, Kubernetes 같은 컨테이너 기술이 새로운 마법이 아니라, 사실은 리눅스 프로세스의 두 가지 기능(namespace + cgroup)을 조합한 것이기 때문임. 이 원리를 알면 "컨테이너가 왜 격리되는가", "메모리 제한이 어떻게 걸리는가", "OOM Killer는 왜 뜨는가"가 전부 하나로 설명됨. 1. 프로세스는 어떻게 태어나는가: fork()와 exec()1.1 리눅스에는 "그냥 실행"이 없다가장 먼저 깨야 할 오해임. 리눅스에서 새 프로그램..
0. 들어가며catalina.out이 왜 무한히 커지는지, 2>&1이 무슨 뜻인지, systemd가 왜 필요한지— 이 질문들의 답은 전부 "프로세스(Process)"와 "파일 디스크립터(File Descriptor)"라는 단 두 개의 뿌리 개념에서 나옴. 1. 리눅스의 근본 철학: "모든 것은 파일이다"리눅스를 이해하는 첫 번째 열쇠는 "Everything is a file" 이라는 설계 철학임.여기서 말하는 "파일"은 우리가 아는 텍스트 문서만이 아님. 리눅스는 아래의 모든 것을 파일이라는 동일한 인터페이스로 다룸.종류예시설명일반 파일/etc/hosts실제 데이터를 담은 파일디렉터리/home다른 파일들의 목록을 담은 특수 파일장치 파일/dev/sda, /dev/null디스크, 키보드 같은 하드웨어를 파..
EC2 리눅스 OS 마이그레이션 작업 진행 중 발생한 의문점 정리. "EBS 스냅샷 생성 후 EBS·ENI를 신규 OS의 EC2로 옮긴다"는 방식이 회의에서 언급되었으나, 정작 서버 내부에 쌓이는 로그·설정·데이터가 물리적으로 어디에 저장되고 있는지에 대한 개념 혼재 상태 발견. 1. RAM vs EBS vs EFS — 역할 구분가장 먼저 명확히 할 부분은 "로그나 설정이 RAM에 저장된다"는 흔한 오해. RAM은 프로세스 실행 중 사용하는 휘발성 작업 공간이며, 재부팅 시 전체 소멸 대상. 반면 재부팅 후에도 남아있어야 하는 모든 데이터는 디스크, 즉 EBS에 저장.구분저장 위치휘발성공유 가능 여부대표 데이터메모리RAM휘발성 (재부팅 시 소멸)불가실행 중 프로세스, 캐시인스턴스 전용 디스크EBS영속 (..
1. 문제 상황운영 환경: 상담 솔루션을 도메인(예: sangdam.com)으로 호출 → 정상 동작.STG 환경: 설정값에 도메인 대신 솔루션 서버의 IP(예: 13.x)가 박혀 있음. 이 IP로 직접 접속 시 상담 화면이 안 뜸.STG는 테스트용 WiFi를 거치며, 이 WiFi에는 프록시가 걸려 있음. 문제의 출발점 "패킷이 어디를 어떻게 지나서 왜 막혔는지" 2. 개념 1 : 네트워크는 "봉투 여러 겹" 패킷 인터넷으로 오가는 데이터 한 덩어리로 실제 내용물을 여러 겹 봉투로 싼 형태.안쪽일수록 실제 내용, 바깥쪽일수록 배달용 정보.계층이름담는 정보편지 장비L7HTTP실제 요청 내용 (GET, 주소, 본문)어플리케이션L4TCP포트 번호 (:8888, :17777)OS 커널L3IP출발지·도착지 IP..
1. 왜 특정 STG 에서만 데이터를 처리하는가. 그룹 개수: 그룹 ID를 stage 단위로 잡는다면(group.id = stg1-group, stg2-group...) 그룹은 4개. 각 그룹 안에 그 stage의 API 서버 4대가 멤버각 서버는 애초에 자기한테 할당된 파티션의 메시지만 받게 됨 2. Offset의 의미offset은 "파티션 안에서 메시지 하나하나에 매겨진 순번" "커밋된 위치"와 "실제로 처리를 끝낸 위치"가 어긋날 때 생기는 문제1) 커밋이 처리(DB) 보다 앞서 있으면 → 유실 (건너뜀) 컨슈머가 offset 51~100번 메시지를 poll해서 메모리에 가져옴auto-commit 타이머가 돌아서 "100까지 다 처리했다"고 카프카에 먼저 커밋해버림근데 실제로는 51~60번 정..
1. Jenkins가 하는 일한 줄로 요약하면: "특정 조건(버튼 클릭, 코드 push 등)이 되면, 미리 정해둔 작업(빌드/테스트/배포)을 순서대로 실행해주는 자동화 서버".Controller (Jenkins 서버 본체): UI 제공, Job 설정 저장, 실행 스케줄링을 담당하는 Java 프로세스Job (=Project): "무엇을 어떻게 실행할지"에 대한 정의 단위. 화면에서 하나씩 만드는 그 대상Build: Job을 한 번 실행한 결과물. Job이 "레시피"라면 Build는 "그 레시피로 만든 요리 한 접시" (빌드로그) 2. Jenkins 서버 구조 — JENKINS_HOMEJenkins(war 파일 or 패키지)를 설치하고 실행하면, Java 프로세스 하나가 뜨면서 기본적으로 JENKINS_H..
Jenkins 빌드 배포가 먹통이 되어 서버에 들어가보니 /engine 디렉토리 용량이 100%. 실제 발생한 이슈를 바탕으로, ELK 스택과 Jenkins가 함께 올라가 있는 서버에서 로그가 어떻게 흐르는지, 각 도구의 역할이 뭔지 분석.1. stdout과 stderr — 로그는 어디서 시작되는가로그의 출발점 : 어떤 프로그램이 실행되면, 운영체제는 그 프로세스에 기본적으로 세 가지 통로(파일 디스크립터)를 오픈프로세스가 실행되면 OS가 stdin/stdout/stderr 세 통로를 자동으로 열어주고, 실행 방법에 따라 stdout/stderr의 목적지가 달라진다모든 프로세스는 태어날 때부터 세 개의 통로를 가지고 있고, 우리가 System.out.println()을 쓰든 Python의 print()를..
요약catalina.out은 Tomcat 프로세스의 콘솔 출력이 모이는 파일에 가까운 로그. 애플리케이션 로그가 콘솔로 출력되고 있다면 해당 로그도 catalina.out에 쌓일 수 있음. 하지만 Vector가 catalina.out을 수집하지 않는다면 Kibana에서는 이 로그를 확인할 수 없음.반면 Kibana에서 조회되는 로그는 Vector가 읽고 Kafka를 거쳐 Elasticsearch에 저장된 로그. 서버에 존재하는 모든 로그가 자동으로 Kibana에 보이는 구조가 아님.logrotate는 일반 로그 파일을 주기적으로 나누고 압축하고 삭제하는 도구. systemd는 서비스를 실행하고 stdout/stderr의 처리 방식을 관리하는 도구. systemd를 사용한다고 해서 모든 로그 파일의 rot..
Backend Deep Dive Spring + JDBC 트랜잭션의 원리이중 실행 방지까지 ThreadLocal, Connection Pool, @Transactional의 동작 원리를 한 번에 이해하는 가이드 — 주니어 개발자를 위한 실전 해설 Spring Framework JDBC / Connection Pool ThreadLocal JDK 21 Virtual Thread 목차 왜 이 문제를 만났는가 — 이중 실행의 위험 JDBC가 Connection을 관리하는 방법 — ThreadLocal 스레드 풀과 Connection 반납 원리 @Transactional 어노테이션의 실제 동작 DB Lock과 트랜잭션 ..