Computer Science
-
분산 시스템의 재앙, Split Brain: 원인 분석부터 글로벌 기업의 대응 전략까지Computer Science/Software Engineering 2026. 1. 22. 18:30
오늘은 고가용성(HA, High Availability) 시스템을 설계하는 엔지니어라면 반드시 정복해야 할 숙제, Split Brain(스플릿 브레인) 현상을 심층적으로 다루어 보겠습니다. 단순히 "서버가 두 개가 된다"는 수준을 넘어, 왜 이 현상이 데이터 정합성을 파괴하는지, 그리고 글로벌 기업들은 어떤 엔지니어링 기법으로 이를 방어하고 있는지 3,000자 분량의 가이드로 정리했습니다.1. Split Brain: 왜 분산 시스템의 '악몽'인가?1.1 개념 정의분산 시스템에서 Split Brain은 네트워크 단절(Network Partition)로 인해 클러스터가 두 개 이상의 독립적인 그룹으로 쪼개지고, 각 그룹이 서로의 존재를 알지 못한 채 스스로를 Master(Leader)로 승격시키는 현상을 말..
-
서버 장애의 80%는 여기서 시작된다? 커넥션 풀(Connection Pool) 최적화 가이드 🌊Computer Science/Database 2026. 1. 20. 18:00
안녕하세요! 5년 차 주니어 개발자입니다. 오늘은 백엔드 성능의 핵심 보루, **커넥션 풀(Connection Pool, CP)**에 대해 깊이 있게 다뤄보려 합니다."사용자가 많아지면 무조건 풀 크기를 늘리면 될까?" "언제 풀이 부족하다는 걸 알 수 있을까?" 실무에서 마주하는 이 질문들에 대해 명쾌한 해답과 모니터링 노하우를 공유합니다! 🚀1. 커넥션 풀(Connection Pool)이란? 🏊♂️DB 커넥션 풀은 미리 일정한 수의 **데이터베이스 연결(Connection)**을 만들어 '풀(Pool)' 속에 보관해 두었다가, 요청이 올 때마다 빌려주고 반납받는 방식입니다.왜 직접 연결하지 않고 '풀'을 사용하나요? (Why?)DB와 매번 새로 연결하는 작업(TCP 3-way handshake ..
-
네트워크 대역폭(Bandwidth)이란?Computer Science/Network 2026. 1. 19. 13:41
오늘은 백엔드 서버를 설계하고 운영할 때 절대 간과해서는 안 될 요소, 바로 네트워크 대역폭(Bandwidth)에 대해 이야기해보려 합니다.서버 로직 최적화에는 공을 들이면서, 정작 데이터가 오가는 '길'에 대해서는 무관심하지 않으셨나요? 대역폭을 이해하면 성능 개선은 물론 인프라 비용까지 획기적으로 줄일 수 있습니다. 💸1. 대역폭(Bandwidth)이란 무엇인가?네트워크 대역폭은 단위 시간 내에 전송할 수 있는 데이터의 최대 용량을 의미합니다. 흔히 속도와 혼동하지만, 정확히는 '통로의 넓이'에 가깝습니다.핵심 개념 비교용어개념비유대역폭 (Bandwidth)이론상 최대 전송 가능량고속도로의 차선 수 (8차선 vs 2차선)처리량 (Throughput)실제로 전송된 데이터 양1시간 동안 실제 통과한 차..
-
Engine=InnoDB는 뭘 지정해주는 걸까 - MySQL 엔진과 스토리지 엔진Computer Science/Database 2023. 7. 9. 23:05
MySQL 아키텍처 MySQL 서버는 MySQL 엔진, 스토리지 엔진으로 구분 스토리지 엔진은 핸들로 API를 만족하면 누구든 구현해서 서버에 추가 가능 MySQL 엔진 아키텍처 MySQL 엔진 MySQL 엔진은 아래의 역할들을 수행하며 요청된 SQL 문장을 분석, 최적화하는 핵심 처리를 함 커넥션 핸들러: 클라이언트로부터의 접속 및 쿼리 요청을 처리 SQL 파서 전처리기 옵티마이저: 쿼리를 최적화 하여 실행 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장하거나 데이터를 읽어오는 부분을 전담 스토리지 엔진은 여러 개를 동시에 사용할 수 있다 각 스토리지 엔진은 성능 향상을 위해 키 캐시나 InnoDB 버퍼 풀과 같은 기능을 내장 mysql> CREATE TABLE test_table (fb1 INT,..
-
HTTPS는 어떻게 신뢰성있는 통신을 보장할까❓Computer Science/Network 2022. 11. 12. 22:18
더보기 약 1년만에 고향 티스토리로 돌아와 글을 쓰는 감회가 새롭다 현재 HTTP 완벽 가이드 책으로 스터디를 진행중인데, 14장 보안 HTTP 단원 발표 준비를 하며 당연하게만 쓰고있었던 HTTPS를 제대로 이해보고자 한다 https://2jinishappy.tistory.com/338 대칭 키/공개 키/단방향 암호화 알고리즘(정의와 예시) 암호화 알고리즘은 암호화/복호화에 사용되는 키, 그리고 양방향 가능 유무를 기준으로 분류할 수 있다. Symmetric-Key Algorithm 대칭 키 알고리즘 대칭 키 암호는 암호화 알고리즘의 한 종류로, 암호 2jinishappy.tistory.com 이전에 대칭키, 공개키 암호화 알고리즘에 관한 글을 작성한 적이 있었다. 대칭키 공개키가 어떤건지는 알겠는데,..
-
동시성 제어 메커니즘 - 낙관적 락, 비관적 락Computer Science/Database 2021. 12. 7. 19:18
Concurrency Control Mechanisms Database Lock ❓ RDBMS에서 트랜잭션 시스템에 적용되는 동시성 제어 방법. 특정 트랜잭션이 레코드에 접근 중 일때 다른 트랜잭션이 해당 데이터에 접근하지 못 하게 막는 것을 의미한다. 일반적으로 Lock의 단위가 너무 작으면 독립성이 보장받지 못 하고, 너무 크면 트랜잭션이 직렬화 되어 수행 시간이 느려진다. Optimistic Concurrency Control 여러 트랜잭션이 서로 간섭하지 않고 자주 완료될 수 있다고 가정하는 동시성 제어 방식. 일반적으로 Block Contention(동일한 인덱스나 데이터 블록에 동시에 액세스하기 위해 경쟁하는 프로세스 또는 인스턴스)이 낮은 환경에서 사용한다. 원하는 규칙이 커밋 시 위반되면 ..
-
NAT와 포트포워딩 - 패킷의 IP와 Port 번호 변환하기Computer Science/Network 2021. 11. 1. 22:23
NAT : Network Address Translation IP 패킷의 TCP/UDP Port Number와 출발지(Source), 목적지(Destination) IP 주소를 재기록 하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술 위의 그림처럼 Host - Router - Server를 거치는 과정에서 패킷은 많은 네트워크 단말을 거치게 되는데, 그 과정에서 출발지의 (IP, Port Num)과 도착지의 (IP, Port Num)과 같은 데이터는 계속해서 변할 수 있다. 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬도 다시 계산해서 재기록해야 한다. IPv4를 사용할 때 가능한 최대 IP 개수는 255^4 = 4,228,250,625(약 40억)로 한정되어 있기 때문에, 제한된 수의..
-
DB의 비정상 수행을 유발하는 SQL Injection을 예방하기Computer Science/Database 2021. 10. 31. 15:34
SQL Injection 이란? SQL Injection이란 SQL 쿼리문을 조작할 수 있는 입력을 사용해서 데이터를 악의적으로 이용하거나 탈취할 수 있는 공격을 의미한다. 주로 로그인, 사용자 입력 창에서 입력 값에 대한 검증 로직이 빈약할 경우 발생할 수 있으며 이로 인한 피해는 인증 우회/원격 명령 실행/DB 정보 수정,삭제,탈취와 같은 피해가 발생할 수 있다. 2017년 우리나라 숙박 애플리케이션 여기어때도 SQL Injection으로 인해 고객 정보를 탈취당한 사례가 있다. public List unsafeFindAccountsByCustomerId(String customerId) throws SQLException { // UNSAFE !!! DON'T DO THIS !!! Strin..