오늘 정한 건 오늘안에 해결하기

more

[Python Design Pattern] Global Object Pattern

Python의 모듈 import 작동 방식이 가진 양면성Python에서 모듈을 import 한다는 것은, 그 모듈 파일의 최상위 코드(Top-level code)를 처음부터 끝까지 실행한다 걸 의미한다.- Python 모듈의 작동 원리Python은 스크립트 언어의 특성상, 모듈을 import할 때 단순히 클래스나 함수 정의만 읽어들이는 것이 아니다. 들여쓰기 되지 않은(Un-indented) 최상위 레벨의 코드를 즉시 실행한다.변수 할당, 표현식 계산, 심지어 if문이나 for문도 import 시점에 실행된다.- 장점 상수(Constants) 정의: 변하지 않는 값들을 미리 계산하거나 정의해 둘 수 있다. (예: PI = 3.14159, DEFAULT_TIMEOUT = 30)데이터 구조: 함수나 클래스 ..

카테고리 없음 2025.12.17 1

[Python Design Pattern] 상속(Inheritance)보다는 합성(Composition)을 우선할 것

상속을 남용할 때 발생하는 "서브클래스 폭증" 단순한 로거(Logger) 클래스를 예시로 들자. 초기에는 파일에 로그를 기록하는 기능만 있었다.import sysimport syslogclass Logger(object): def __init__(self, file): self.file = file def log(self, message): self.file.write(message + '\n') self.file.flush()요구사항이 늘어나면서 로그를 파일뿐만 아니라 소켓(Socket)이나 시스템 로그(Syslog)로 보내는 기능도 추가해야 한다. 상속을 사용하면 아래와 같이 각각에 대한 자식 클래스를 만들어야 한다. class SocketLogger(..

카테고리 없음 2025.11.27 0

[이중화] 2. Kafka

Kafka란 무엇인가?Kafka의 핵심 정의는 분산 이벤트 스트리밍 플랫폼(Distributed Event Streaming Platform)이다.단순히 A에서 B로 데이터를 보내는 '배달부' 수준을 넘어, 디지털 신경망(Central Nervous System)처럼 기업의 모든 데이터를 실시간으로 감지하고, 저장하고, 반응하게 만드는 거대한 인프라이다.데이터의 흐름: 지속적으로 생성되는 데이터(이벤트)의 강물과 같다.핵심 역할 3가지 (The Big 3):Publish & Subscribe: 데이터를 생성하고(Produce) 필요한 곳에서 가져간다(Consume).Store: 데이터를 즉시 지우지 않고 디스크에 안전하게 오래 저장한다. (이 점이 기존 메세지 큐인 RabbitMQ와 가장 큰 차이)Pro..

카테고리 없음 2025.11.18 0

[이중화] 1. Apache Zookeeper

최근에 고가용성(HA)을 위한 이중화 구조를 소규모로 직접 구축해보면서 새로운 프로그램들을 많이 접하게 되었다. 각각의 프로그램들을 사용하면서 그 프로그램들이 정확히 어떤 것인지를 잘 몰라 이렇게 정리하게 되었다. 많은 프로그램들이 있지만 첫 번째로 Apache Zookeeper에 대해서 정리해보려 한다.Apache Zookeeper(주키퍼) 란? 분산 애플리케이션을 위한 오픈소스 '코디네이션(Coordination) 서비스'이다. 여러 대의 서버가 하나의 시스템처럼 동작해야 하는 '분산 시스템' 환경에서, 이 서버들 간의 조정 작업을 전문적으로 처리해주는 중앙 관리자 역할을 수행한다. 개발자가 race condition(경쟁 상태)이나 deadlock(교착 상태) 같은 복잡한 분산 환경의 오류를 직접 ..

카테고리 없음 2025.11.13 0

MQTT에 대해

MQTT는 'Message Queuing Telemetry Transport'의 약자로, IoT (사물 인터넷) 환경을 위해 특별히 설계된 매우 가벼운(lightweight) 메시징 프로토콜이다. 저전력, 저대역폭(네트워크 용량이 작은) 환경에서도 기기(센서, 스마트폰 등) 간에 메시지를 안정적으로 주고받을 수 있게 해주는 '통신 규약'이다. 예시: 잡지 구독먼저, '잡지 구독' 모델을 통해 MQTT가 무엇인지 파악해도록 하겠다. 구독자 (Subscriber): "저는 '스포츠' 잡지만 구독할래요." (예: 내 스마트폰 앱)발행자 (Publisher): "새로운 야구 경기 결과가 나왔습니다! '스포츠' 주제로 발행합니다." (예: 야구장 센서)중개인 (Broker): "'스포츠'를 구독하는 모든 사람에게..

카테고리 없음 2025.11.05 1