분류 전체보기

🌏 메세지 복제(Replication)와 브로커의 Leader-Follower 구조✅ Replication (복제)Kafka는 데이터를 여러 Broker에 복제(Replication) 해서 저장합니다.데이터를 다중화하기 때문에 Broker 하나가 장애가 나도 다른 Broker에 복제된 데이터를 사용할 수 있습니다. 이 복제 개수는 Replication Factor로 설정합니다.예를 들어 Replication Factor = 3이라면 하나의 Partition 데이터가 총 3개의 Broker에 저장됩니다✅ Leader-Follower 구조Kafka의 Partition은 Leader와 Follower라는 두 가지 역할로 나뉘어 관리됩니다.Leader읽기/쓰기는 Leader가 담당합니다.Producer가 데이..
🌏 Kafka의 분산 로그 저장 시스템(Distributed Commit Log)이것이 카프카의 가장 뚜렷한 차별점입니다✅ 로그(Log)Kafka는 메시지를 단순히 "큐에 넣었다가 소비되면 삭제"하는 게 아니라,디스크에 순차적으로 로그 형태로 저장(Commit Log) 합니다.Partition 0 ├─ Offset 0 : 주문1 ├─ Offset 1 : 주문2 ├─ Offset 2 : 주문3각 메시지는 Offset이라는 번호와 함께 디스크에 기록되어, 메시지를 읽어도 바로 사라지지 않고, Retention 설정(예: 7일, 30일) 동안 보존됩니다.이 때문에 나중에 새로 온 Consumer도 과거 데이터를 다시 읽을 수 있습니다. (Replaying 가능)또한 디스크에 순차 쓰기(append only ..
🌏 비동기 메시징 시스템이란?✅ 먼저, 비동기(Asynchronous)란?동기: 요청을 보내고 응답을 받을 때까지 기다림비동기: 요청을 보내고 응답을 기다리지 않고 다른 일 진행메시징 시스템은 일단 메시지를 보내 두면, 상대가 나중에 처리해도 되도록 하는 구조입니다.✅ 메시징 시스템이란?서비스 간에 데이터를 직접 주고받는 대신, 중간에 메시지 브로커라는 우편함을 두는 방식입니다.발신자(Producer)는 메시지를 우편함에 넣고 바로 다른 일 하러 가는 역할수신자(Consumer)는 필요할 때 우편함을 열어 메시지를 읽어 처리하는 역할이렇게 하면 만약에 수신자 서버가 제대로 동작하지 않는다 하더라도, 메세지 브로커에 할 일을 쌓아두었다가 추후에 서비스가 다시 정상 동작할 때 일을 처리할 수 있으므로 안정..
🌏 AOP (관점 지향 프로그래밍)AOP는 핵심 비즈니스 로직에서 공통 관심사를 분리하기 위한 프로그래밍 패러다임입니다.여러 모듈에서 반복되는 부가 기능(공통 관심사)을 따로 빼서 관리하고, 필요한 지점에 끼워 넣는 기법입니다.예를 들자면,핵심 관심사: 주문 생성, 결제 처리공통 관심사: 로깅, 트랜잭션 관리, 보안 검사✅ 필요성중복 코드 제거: 로깅, 보안, 예외처리 같은 코드가 여러 클래스에 흩어져 있지 않음관심사 분리(Separation of Concerns): 핵심 로직과 부가 로직을 분리해 가독성과 유지보수성을 높임변경 용이성: 공통 기능을 한 곳에서만 수정하면 전체에 반영✅ 핵심 용어 (Terms)Aspect (관점)공통 관심사를 모듈화한 단위 (ex: 트랜잭션 관리, 로깅)예: 모든 팀이 ..
브라우저에 깃짱코딩.com을 입력하면 무슨 일이 일어나나요? 🌏 송신지에서 일어나는 일✅ 1. 응용 계층: 사용자의 요청 생성브라우저 주소창에 깃짱코딩.com을 입력했다고 가정해 봅시다.1.1 DNS 요청 (= IP 주소 알아내기)브라우저 주소창에 깃짱코딩.com을 입력하면, 먼저 DNS 캐시를 확인하고, 없는 경우 DNS 서버에 질의를 하는 식으로 흐름이 이어집니다.캐시 확인: 브라우저의 DNS 캐시, OS 캐시 확인호스트 파일 확인: /etc/hosts(리눅스/맥) 혹은 hosts 파일(윈도우)로컬 DNS 리졸버로 요청캐시나 hosts 파일 어디에도 없다면, 브라우저는 OS 네트워크 설정에 지정된 DNS 서버(로컬 리졸버)에 질의합니다.이 DNS 서버는 보통 인터넷 서비스 제공자(ISP)가 제공하..
🌏 TCP/IP 헤더와 패킷TCP/IP 네트워크를 이해하기 위해서는 패킷(packet) 이라는 단위와, 이를 구성하는 헤더(header) 구조를 먼저 살펴봐야 네트워크에서 실제 데이터가 어떻게 나누어지고 전송되는지를 알 수 있습니다.✅ 패킷(Packet)네트워크에서 전송되는 데이터의 최소 단위단순히 데이터(payload)만 존재하지 않고, 그 앞에는 다양한 제어 정보를 담은 헤더(header) 가 붙습니다.[ 링크 계층 헤더 | 네트워크 계층 헤더 | 전송 계층 헤더 | 데이터(payload) ]Payload (데이터)우리가 실제로 보내려는 내용물예시HTTP라면 GET /index.html HTTP/1.1 같은 요청 메시지이메일이라면 Subject: Hello 같은 본문파일 전송이라면 파일 조각 데이터..
🌏 BeanFactorySpring 초창기(2000년대 초반)부터 존재하던 가장 기본적인 IoC 컨테이너입니다.역할은 단순했습니다: 객체(빈) 생성, 의존성 주입(DI)즉, 스프링의 “컨테이너 철학”을 처음 구현한 게 바로 BeanFactory입니다.✅ 빈을 만드는 시점요청할 때! 즉, getBean()을 호출해야 그제서야 객체를 생성합니다. (Lazy Loading)✅ 기능객체를 만들고, 관리하는 단순한 기능 뿐 (Spring MVC, @Transactional, @EventListener 대부분 없음)BeanFactory는 필요한 시점에만 객체를 만들어주는 단순 기계입니다.BeanFactory factory = new XmlBeanFactory(new ClassPathResource("beans.x..
🌏 SOP (Same-Origin Policy)웹 브라우저에는 기본적으로 Same-Origin Policy(동일 출처 정책, SOP)라는 제약이 걸려 있습니다. 출처(Origin)는 프로토콜 + 도메인 + 포트 조합으로 결정되고, 브라우저는 이 조합이 완전히 같을 때만 자유롭게 요청, 응답을 통한 데이터 접근을 허용합니다.이 제약은 보안을 위해 꼭 필요합니다. 만약 이 정책이 없다면, 악성 웹사이트에 접속했을 때 그 사이트의 자바스크립트가 내가 로그인해 둔 은행 사이트의 쿠키나 계좌 정보를 그대로 읽어버릴 수도 있습니다. 따라서 SOP는 브라우저 단에서 다른 출처 간 데이터 접근을 차단하는 안전장치입니다.SOP가 막는 것들을 정리해 보자면,✅ 1. DOM 접근 차단내가 만든 사이트에서 을 넣었다고 해본..
🌏 주요 웹 보안 공격 기법✅ XSS (Cross-Site Scripting)사이트에 스크립트를 삽입해 공격하는 방식예를 들어 게시판에 악성 자바스크립트 코드를 심어두면, 다른 사용자가 그 글을 열었을 때 브라우저가 그대로 실행해버립니다. 이때 공격자는 사용자의 세션 정보나 입력 값을 직접적으로 훔칠 수 있습니다.탈취할 수 있는 것세션 쿠키예: document.cookie를 읽어서 공격자 서버로 전송 (단, HttpOnly 옵션을 붙이면 탈취할 수 없음)로컬 스토리지 / 세션 스토리지 값JWT 토큰 같은 인증 정보가 저장되어 있다면 노출사용자 입력 값폼(form)에 입력한 계좌번호, 비밀번호, 카드 정보 등DOM 조작을 통한 피싱가짜 입력창을 띄워 ID/비밀번호 입력 유도브라우저에서 접근 가능한 API..
🌏 인증을 구현하는 방법들✅ 쿠키 기반 인증쿠키 = 서버가 클라이언트를 구분하기 위해 발급하는 작은 데이터 조각클라이언트 브라우저에 저장되어 이후 요청마다 자동으로 함께 전송보통 서버에서 Set-Cookie 응답 헤더로 내려주고, 브라우저는 이후 요청 시 Cookie 헤더로 전송단순히 상태를 기억하는 용도(장바구니에 넣은 물건을 기억한다던가,,)로도 쓰이지만, 보안 토큰이나 세션 ID 전달에도 활용쿠키 기반 인증은 초창기 웹에서 가장 많이 쓰였던 방식입니다. 다만 브라우저에 그대로 저장되다 보니 탈취 위험이 있고, 용량이 제한적이며, 보통 도메인 단위로만 사용이 가능합니다.‘쿠키 기반’이라는 것은 그냥 데이터를 서버로 전달하는 매개체가 쿠키라는 뜻이지, 실제 저장하는 로그인 정보가 서버이면 세션 기반,..
깃짱
'분류 전체보기' 카테고리의 글 목록 (4 Page)