Bank-End Chronicles

「Memory gets GC’d, but this blog stays committed.」

OS - 운영체제, 프로세스, 메모리

그림으로 쉽게 배우는 운영체제 강의를 보고 정리

운영체제란? 운영체제가 하는 일의 종류 프로세스를 관리하기 pc에 여러가지 프로그램을 한번에 켜 두면, 자연스럽게 지금 사용하지 않는 프로그램을 background에 둔다. 메모리 관리 하드웨어 관리 사용자가 하드웨어에 직접적으로 접근하는 것을 금지하고, 운영체제가 대...

Java - 8부터 17까지의 변화

자바는 어떤 세월을 쌓아왔나?

자바 8부터 17까지의 주요 변경사항에 대해 알아보자! ✅ Java 8 (2014년) 기점이 되는 LTS (Long Term Support) 버전. 지금도 많이 쓰임. 람다식 (Lambda Expression) 데이터베이스 질의 언어에서 표현식을 처리하는 것처럼 병렬 연산을 지원하는 스트림이라는 새로운 API를 ...

Kafka란?

MQ와 비교를 곁들인

카프카란? 카프카와 MQ는 메세지 브로커라는 점에서 같은 범주라고 볼 수 있다. producer -> broker -> consumer 라는 구조로 비동기 메세지 전달을 처리하는 시스템이다. 둘의 가장 큰 차이점은, MQ는 “메세지를 안전하게 한 곳으로 보내자”인 반면, Kafka는 “이벤트를 저장해서 여러 군데에서 활용하자”라는 서로 다...

동기냐 비동기냐 그것이 문제로다

WebFlux를 곁들인

비동기는 무조건 빠른가? NO IO 병목 심한 API 서비스를 WebFlux로 바꿔야 할까? 비동기는 블로킹을 줄이는 것일 뿐, 연산 자체가 빠른 게 아님 오히려 잘못 설계된 비동기 처리는 컨텍스트 전환 비용으로 더 느려질 수도 있음 동기(Synchronous) 처리 개념: 클라이언트 요청이 들어오면, 해당 요청을 처리하는 동안 쓰레드...

Kubernetes란

기존 운영방식(WAS + 배포스크립트)과 비교를 곁들인

Kubernetes 란? 컨테이너를 운영하는 자동화 시스템 기존의 전통적인 방식으로는 보통 WAS를 깔고, 그 위에 jar나 war 파일을 올려서 배포를 했다면, 이제는 컨테이너Docker를 사용해서 배포를 한다. 컨테이너는 환경 차이 없이 어디서든 실행이 가능하기 때문에 사용한다. 그런데 컨테이너가 많아지면 몇 가지 문제가 생길 수 있다. ...

Elasticsearch vs RDB

Elasticsearch란? RDB와 비교를 곁들인

Elasticsearch Java 오픈소스 분산 검색 엔진 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real Time )으로 저장, 검색, 분석할 수 있다. ES는 역색인을 지원하기에 기존 RDB가 지원하지 않는 비정형 데이터를 인덱싱 + 검색하는 것에 특화되어있다. 비정형 데이터: 규칙이 없는...

MongoDB vs RDB

MongoDB란? RDB와 비교를 곁들인

MongoDB Document 지향 데이터베이스 고성능, 고가용성 및 쉬운 확장성을 제공하는 NoSQL Document를 사용하면 단일 레코드로 복잡한 계층적 관계를 표현할 수 있어 RDBMS의 row보다 유연하다 미리 정의된 스키마를 필요로 하지 않는다. Data format BSON : Binary JSON ...

Kafka 설정하기

Kafka docker-compose.yml

Kafka 브로커 구성하는 방법 Zookeeper + Kafka 브로커 3개 구성으로 클러스터 만들기 이 예제의 구조: 1 2 3 4 5 📦 docker-compose.yml ├── zookeeper ← 브로커들을 관리하는 중앙 컨트롤러 ├── kafka1 ← 브로커1 (포트 19092) ├── kafka2 ← 브로커2 (포트 1...

동시성을 제어하는 방법 - 분산락

분산락 파헤치기

분산 락 (Distributed Lock) 자바, 스프링 기반의 웹 애플리케이션은 기본적으로 멀티 스레드 환경에서 구동이 되는데, 여러 스레드가 함께 접근할 수 있는 공유 자원에 대해 Race Condition(여러 스레드가 동시에 하나의 공유 자원에 접근할 때 발생하는 문제)이 발생하지 않도록 별도의 처리가 필요하다. 자바의 synchronize...

Linux - 명령어 모음집

`grep`, `sed`, `awk` 완전 정복!

리눅스 텍스트 처리 3대장: grep, sed, awk 완전 정복! 리눅스에서 텍스트 데이터를 다룰 때 가장 많이 쓰이는 명령어가 있다. 바로 grep, sed, awk다. grep: 특정 패턴이 포함된 행을 찾는 명령어 sed: 텍스트를 찾아서 변경하거나 삭제하는 명령어 awk: 데이터를 필드(컬럼) 단위로 가공하는 명령어 이 글...