Facade Notes Facade 주문 하나를 처리하려면 재고를 확인하고, 결제를 승인하고, 배송을 요청해야 한다고 해 보자. 컨트롤러가 이 세 서비스를 직접 알고 순서대로 부르면, 주문 흐름이 바뀔 때마다 호출하는 쪽 코드가 같이 흔들린다. 같은 순서를 배치 작업이나 관리자 화면에서도 반복해야 한다면 중복도 생긴다. Facade(퍼사드) 패턴은 이럴 때 복잡한 하위 ... 2024/09/05 Architecture
Redis Cluster vs Sentinel Notes 두 방식이 해결하는 문제는 다르다 Redis Cluster와 Redis Sentinel은 둘 다 Redis를 여러 대 운영할 때 등장하지만, 목적이 다르다. Sentinel: 장애 감지와 자동 failover 중심 Cluster: 데이터 샤딩과 수평 확장 중심 즉 Sentinel은 같은 데이터를 더 안전하게 운영하는 구조이고, Clus... 2024/09/05 Cache
Introduction to Operating System Notes 운영체제(Operating System, OS)는 하드웨어 바로 위에서 동작하면서, 사용자 프로그램이 하드웨어를 직접 다루지 않고도 실행될 수 있게 해 주는 소프트웨어다. 리눅스, Windows, macOS가 모두 운영체제다. 이 글은 운영체제가 무엇을 하는지를 “왜 필요한가”라는 목적에서부터 정리한다. flowchart TD U["fa:fa... 2024/09/05 Common
Apache POI SXSSF vs XSSF vs HSSF Notes Java로 Excel 파일을 만들거나 읽을 때 가장 먼저 만나는 라이브러리가 Apache POI다. 그런데 POI 안에는 Excel을 다루는 구현이 여러 개 있다. HSSFWorkbook, XSSFWorkbook, SXSSFWorkbook은 같은 Workbook 인터페이스를 구현하지만 다루는 파일 형식과 메모리 사용 방식이 다르다. 수천 행짜리 파일에... 2024/09/05 Common
AWS Code Commit Notes AWS Code Commit AWS CodeCommit은 AWS가 운영하는 비공개 Git 저장소 서비스다. 공식 문서는 CodeCommit을 비공개 Git 저장소를 호스팅하는 관리형 소스 제어 서비스로 소개한다(What is AWS CodeCommit?). 표준 Git 기능을 지원하므로 git clone, git push 같은 평소 명령을 그대로 쓰... 2024/09/05 Common
Concurrency Control Notes Concurrency Control In information technology and computer science, especially in the fields of computer programming, operating systems, multiprocessors, and databases, concurrency control ensu... 2024/09/05 Common
Increasing System Performance in MultiProcessing Notes 요즘은 노트북에도 CPU 코어가 여러 개 들어 있다. CPU가 여러 개인 시스템을 멀티프로세서(multiprocessor) 시스템이라고 하고, 한 칩에 코어를 여러 개 넣은 것을 멀티코어 프로세서라고 한다. 코어가 늘었으니 성능도 그만큼 늘 것 같지만 실제로는 그렇지 않다. 이 글은 CPU를 여러 개 두었을 때 어떤 문제가 새로 생기고, 운영체제와 프... 2024/09/05 Common
JANDI와 AWS CodeCommit 연동 Notes JANDI JANDI(잔디)는 팀 메신저다. 저장소에 누가 푸시했는지를 팀 대화방에서 바로 보고 싶다면, 저장소 이벤트를 메신저 메시지로 바꿔 주는 연결 고리가 필요하다. GitHub처럼 JANDI가 직접 연동을 제공하는 서비스도 있지만, AWS CodeCommit은 그런 전용 연동이 아니라 웹훅을 거쳐 연결해야 한다. JANDI에 AWS Co... 2024/09/05 Common
MultiThreading and Thread Scheduling Notes MultiThreading and Thread Scheduling 멀티스레드는 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법이다. 멀티스레드 (by OS) : 운영체제가 소프트웨어적으로 프로세스를 작은 단위의 스레드로 분할하려 운영하는 기법 CPU 멀티스레드 : 하드웨어적인 방법으로 ... 2024/09/05 Common
System Structure & Program Execution Notes Introduction to Operating System에서 운영체제가 편의성, 효율적인 자원 관리, 보호를 위해 존재한다고 정리했다. 이 글은 그 일이 하드웨어 위에서 실제로 어떻게 이뤄지는지를 다룬다. 앞부분은 컴퓨터 시스템의 구조(CPU, 메모리, I/O 장치가 어떻게 연결되고 신호를 주고받는가), 뒷부분은 프로그램이 디스크에서 메모리로 올라와... 2024/09/05 Common