fragile and resilient

전체 글 34

2025.01.06 일기 - 지구 끝의 온실

집 근처에 작은 화원이 하나 있다. 회사에서 집을 오갈 때나 커피를 사러 갈 때마다 눈길이 가는 가게였다. 화려한 화원은 아니었고 통창 뒤로 아기자기한 초록 잎을 달고 있는 작은 크기의 화분들이 있는 단아한 가게였다.지나가면서 ‘언젠가 한 친구를 집에 데려가고 싶네.’ 라고 생각했다.레옹의 마틸다처럼 멋지게 화분을 들고 집까지 당당하게 걸어가는 이상한 상상을 하며 혼자 웃었다. 하지만 몇 개월째 그 친구를 집으로 데려오지는 않았다. 그 당시 꽤나 지친 상태였던 것 같다. 움직이지 않는 작은 크기의 식물 하나를 키우는 데에 필요한 책임감을 갖는 것도 쉽지 않았다. 우리 집에 나를 제외한 또 다른 생명체를 들인다는 것은 고민이 필요했다. 어렸을 적 잘 돌보지 못했던 전적도 있었고, 화원에서 생명력을 뿜어냈던..

생각 2025.01.07

2024.12.28 일기 - 숨결이 바람 될 때

제주도에 도착하니 매섭게 바람이 불었다. 도로와 가깝게 맞닿아있는 길을 걷는데 바람이 너무 세서 자꾸만 도로에 몸이 가까워졌다.조금이라도 힘을 놓아버리면 도로쪽으로 날아갈 것만 같아서 무서웠다. 주위에 있는 무거운 돌이나 가로등을 붙잡고 위태로운 내 몸을 고정하고 싶었다.하늘을 보니 새들이 날고 있었다. 새들은 바다로 나아가려는 듯 보였지만, 바다에서 불어오는 강한 바람 때문에 앞으로 나아가지 못하고 그 자리에 정지해 있는 것처럼 보였다.분명 앞으로 나아가려고 힘주고 있는 것처럼 보이는데 정지해있었다. 관찰하다가 힘이 풀리면 단박에 몇 미터는 날아갈 것 같아서 다시 정면을 응시했다. 카페에 도착하여 ‘숨결이 바람 될 때’ 라는 에세이를 읽었다. 작가는 의학 대학교를 졸업하고 레지던트 생활이 6개월 남은..

생각 2025.01.07

2024.12.10 일기

여러 형태의 작별이 있다. 내가 의도한 이별도 있고 의도하지 않은 갑작스러운 이별도 있다.좋건 나쁘건 슬프고 아쉬운 감정이 드는 것은 어쩔 수 없는 것 같다. 얼마 전 지아 언니가 나에게 말했다.“나는 헤어질 때마다 파티를 해야 한다고 생각해, 헤어짐 축하 파티" 나는 작별하기 이전의 상태로 돌아갈 수 없어 그러니까 축하해 주는 거지 나의 변태를.이전의 나와 지금의 내가 절대 같을 수는 없어 나는 이미 압력이 가해져 형태가 변형되어버렸으니까. 문득 이런 생각이 들었다. '시작'과 '끝'은 각각 존재하는 형태가 아니라 '시작과 끝'이라는 하나의 형태로 이루어져 있다는 생각을.시작과 끝은 함께 포개어져 우리에게 다가온다는 사실을. 그 틈은 매우 촘촘하여 이것이 시작을 의미하는 것인지, 끝을 의미하는 것인지 ..

생각 2024.12.12

[Elasticsearch] Shard Allocation 은 어떻게 결정될까?

성능 테스트 과정에서 특정 데이터 노드에 샤드가 집중된 것을 발견했습니다. 엘라스틱서치에서는 아래 상황에서 샤드의 배치를 결정하게 됩니다.클러스터에 인덱스를 추가하는 경우Node failure - 클러스터에서 노드가 drop된 경우 해당 노드에 존재하던 샤드들을 재배치클러스터 크기 조정 - 클러스터에 새로운 노드가 추가되거나 제거되는 경우 노드의 디스크 사용량이 전체의 90% 이상을 도달하는 경우샤드를 수동으로 라우팅하는 경우라우팅 관련 설정 업데이트ShardsAllo cator는 샤드 배치를 담당하는 ElasticSearch 인터페이스입니다. 해당 인터페이스의 구현체 BalancedShardsAllocator의 allocate를 보면 1. allocate unassigned shards, 2. move..

Storage 2024.04.10

[JPA] SimpleJpaRepository의 EntityManager는 어디서 생성될까?

JPA를 사용하면 보통 아래와 같이 선언해서 Repository를 사용합니다. interface JpaTestRepository extends JpaRepository, TestRepository {}여기서 JpaRepository 의 구현체인 SimpleJpaRepository 를 살펴보겠습니다. 데이터를 저장할 때 사용하는 save 메서드를 기준으로 보겠습니다.로직을 보니 entityInformation.isNew를 확인하고 true이면 em.persist(entity)를 실행하고, false이면 em.merge(entity)를 실행합니다. (이 로직에 대한 부분은 다른 포스팅에서 다루겠습니다.) 여기서 em을 통해 로직을 수행하는 것을 보니 EntityManager가 굉장히 중요한 역할을 하는 것으..

Spring 2024.02.24

자바 성능 튜닝 끄적끄적

CPU 사용률CPU 사용률은 전형적으로 사용자 시간과 시스템 시간으로 나뉜다. 사용자 시간: CPU가 애플리케이션 코드를 실행하는 시간의 백분율 애플리케이션 I/O 작업으로 디스크의 파일을 읽거나 네트워크로 데이터를 쓰는 등 시스템 시간: CPU가 커널 코드를 실행시키는 시간의 백분율 기반 시스템 자원 사용 시 vmstat 1 - 매초마다 프로세스, 메모리, 페이징, swap, I/O 블럭, CPU 활동 사항들의 정보 출력코드를 최적화하는 데 있어 목표는 짧은 시간동안 CPU 사용률을 낮추는 것이 아니라 높이는 것이다. 디스크 사용률애플리케이션이 디스크 I/O를 많이 일으키면 I/O는 병목되기 쉽다.iostat -xm 5 - 5초마다 디스크 사용률 정보를 표시할 수 있다. - -x옵션을 사용하면 확장된 ..

Java 2024.02.17

[Elasticsearch] Near real-time search, Refresh

색인 작업 시 세그먼트 동작 방식엘라스틱서치는 내부적으로 Lucene이라는 라이브러리를 통해 검색 기능을 수행한다. 검색 요청이 오면 Segment들이 각각의 검색 결과를 만들고 이를 통합해서 검색 결과를 응답하도록 되어있다.루씬은 색인 작업 시 기존에 생성된 세그먼트에는 정보를 추가하거나 변경하지 않고, 색인 작업을 할 때마다 새로운 세그먼트 파일을 생성한다. 해당 방식으로 동작하는 이유는 Segment의 불변성을 유지해서 검색 성능을 보장하기 위함이다.(새로운 세그먼트가 계속 생성되므로, 루씬은 백그라운드에서 세그먼트 파일을 병합하는 작업을 수행하고 이를 통해 모든 세그먼트들을 물리적으로 하나의 파일로 병합한다.)이미지 출처: 엘라스틱서치 실무 가이드Refresh루씬은 효율적인 색인 작업을 위해 내부..

Storage 2024.02.15

[Elasticsearch] No master is elected

문제 상황성능 테스트 과정에서 master node 의 스펙을 변경하였고, 3개의 마스터 노드중에서 2개를 종료한 뒤 새로운 스펙으로 2대를 띄웠습니다. 해당 과정을 진행 후 도큐먼트 조회 / 업데이트가 안 되었고, 아래 에러가 떴습니다.{  "error" : {    "root_cause" : [      {        "type" : "master_not_discovered_exception",        "reason" : null      }    ],    "type" : "master_not_discovered_exception",    "reason" : null  },  "status" : 503}  원인노드가 추가되거나 제거될 때 Elasticsearch는 새 마스터를 선택합니다. 일..

Storage 2024.02.14

물고기는 존재하지 않는다

주기적으로 보는 책이 있다. 아무 생각 없는 지하철에서, 고민되는 일이 있을 때, 그냥 그저 그런 어느 날.특별한 순간에 생각나는 책은 아니고 그냥 주기적으로 펼치게 되는 책이다. 너무나 매력적이고 소중한 책이다. 이 책을 읽으며 나를 가장 강하게 휘감은 생각은 '나는 내가 제어할 수 없는, 너무나 갑작스럽고 충격적이면서도 혼란스러운 일이 생기면 어떻게 행동하고 있었는가?' 이다. 갑작스럽고 혼란스러운 일.누군가는 큰 충격을 받고 무너질 것이고, 누군가는 이 일을 잊기 위해 더 바쁘게 살아갈 것이고, 누군가는 덤덤하게 받아들이겠지.사람마다 대처는 다르겠지만 변하지 않는 한 가지 사실이 있다.이런 일은 누구에게나 올 수 있고, 온다는 것이다. 나는 이럴 때 어떻게 행동하는 사람이었나? 이 책의 가장 훌륭..

생각 2024.02.12

어느 날의 일기들

2024. 2. 10 어릴 적 내가 기억하는 이모는 항상 무언가를 열심히 하고 학구열이 강한 사람이었다. 방에는 항상 수많은 책들이 즐비했고, 몇 개의 책들에는 북클립이 꽂혀있었다. 이모와 할머니집 근처에 있는 도서관에 자주 갔었다. 이모는 어디를 갈 때 항상 나를 데리고 나갔다. 나는 이모와 함께 나가는 모든 곳을 좋아했다. 초등학교도 입학하기 전이어서 정확하게 기억나지는 않지만, 이모는 도서관 긴 책상에 앉아서 오랜 시간 공부했다.나는 그 근처에 영상을 볼 수 있는 컴퓨터가 있는 공간에서 혼자 ‘센과 치히로의 행방불명’을 봤다.그때 그 도서관에서 영화를 보던 순간들이 이따금씩 생각난다. 내 몸보다 지나치게 크던 책상과 의자. 다른 세계로 이동하는 길목인 푸른 들판에 서있던 치히로의 모습과 햇살이 비치..

생각 2024.02.11