fragile and resilient

전체 글 38

기준

행복 아침 일찍 일어나 빵과 함께 마시는 커피 주말 아침에 햇빛을 바라보며 먹는 브런치 읽고 싶은 책이 있는 것 할 일을 다 마치고 밤에 책을 읽는 시간 자연 속에 있는 것 가족들이 무탈한 것 생각을 나눌 친구가 있다는 것 행복의 다른 이름을 감사라고 칭하고 싶다. 해야 할 일들의 우선순위를 정리해보았다.친오빠를 포함해 나를 잘 아는 지인은 이야기한다. “너의 기준을 생각해. 우선순위를 정해봐.”얼마 전 지아 언니와의 대화가 떠오른다. “재작년부터는 조금 알 것 같았고, 작년에는 정말 잘 알고 있다고 생각했는데, 올해가 되니 다시 아무것도 모르겠더라.” 기다림이 나에게 무엇을 의미하는지 고민했다.

생각 2025.04.13

지킬 앤 하이드

뮤지컬 '지킬 앤 하이드'를 보고 왔다. 너무 재밌어서 집에 오는 길에서부터 영상을 찾아보고 음악을 들었다. 인간의 내면을 선과 악이라는 두 인격으로 분리하고 이를 통제한다는 설정은 인간을 꿰뚫는 이야기 같다. 인간의 이중적인 면모. 탁월한 친화력과 협력적 의사소통을 기반으로 큰 문명을 이룬 우리 종은 동시에 엄청난 잔인성을 지니고 있다.내가 속한 집단에 위험이 되는 정체성이 다른 타인에 대해서는 놀라울 만큼 손쉽게 비인간화하고 잔혹해질 수 있다는 것을 역사가 말해준다. 지킬은 자신의 일부분인 악한 자아(하이드)를 인정하지 못한다. The Confrontation의 가사에서도 드러나듯 악행을 일삼는 하이드와 끊임없이 충돌하고 절망한다.하이드 난 살아 영원히 네 안에지킬 아니야하이드 저 사탄의..

생각 2025.04.12

요즘 읽은 글

어릴 때부터 나는 이미 본 영화나 글을 여러 번 다시 보는 버릇이 있었다. 요즘 여러 번 읽었던 글들을 기록하고 싶어서 남겨둔다. 이따금씩 최근 주의 깊게 읽었던 책과 구절을 기록해두면 내 의식의 변화와 나 자신에 대해 더 잘 이해할 수 있을 것 같다. 우리가 팔십 년을 건강하게 산다고 가정하면 약 삼만 일을 사는 셈인데, 우리 직관이 다루기엔 제법 큰 수입니다. 저는 대략 그 절반을 지나 보냈고, 여러분 대부분은 약 삼분의 일을 지나 보냈습니다. 혹시 그중 며칠을 기억하고 있는지 세어 본 적 있으신가요? 쉼 없이 들이쉬고 내쉬는 우리가 오랫동안 잡고 있을 날들은 삼만의 아주 일부입니다. 먼 옛날의 나와, 지금 여기의 나와, 먼 훗날의 나라는 세 명의 완벽히 낯선 사람들을 이런 날들이 엉성하게 이어 주..

생각 2025.03.24

[Redisson] Pub/Sub 기반 Redis Distributed Lock

분산락(Distributed Lock)은 분산 환경에서 공유 리소스에 대한 동시 접근을 제어하기 위한 동기화 메커니즘이다. 이를 통해 임계 영역에서 발생할 수 있는 경쟁 조건(Race Condition)을 방지할 수 있다. Redis를 활용한 분산 락 방법에는 대표적으로 Spin Lock 방식과 Pub/Sub 기반 Lock 방식이 있다. Spin Lock 방식은 Redis의 SETNX(Set if Not Exists) 명령어를 사용하여 락을 획득하는 방법이다. 락이 이미 존재하면 일정 시간 동안 락이 해제되기를 기다리면서 주기적으로 Redis에 요청을 보내 락 해제 여부를 확인한다. 구글링하면 많은 예제들이 존재하므로 어렵지 않게 구현할 수 있을 것이다. 해당 글은 Redis를 활용한 분산락 구현 방법에..

Storage 2025.03.13

지구 끝의 온실

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

생각 2025.01.07

숨결이 바람 될 때

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

생각 2025.01.07

2024.12.10 일기

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

생각 2024.12.12

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

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

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