전체 글 310

Partitioner와 Multi Thread를 활용한 Spring Batch 성능 개선

8비트 MSX로 컴퓨터를 배웠으나 나의 첫 컴퓨터는 IBM XT였고, 꽤 오랜 기간 DOS를 사용했다. 그래서인지 아직도 배치하면 AUTOEXEC.BAT가 같이 생각난다. 이번에 정리할 내용은 많이 사용하는 스프링 배치의 성능 개선에 대한 것이다. 배경백엔드 서비스를 운영하는 개발팀은 이미 다양한 배치를 운영하고 있을 것이고, 스프링 배치로 구현되었을 확률이 높다. 많은 배치는 서비스 사용량이 적은 새벽에 실행되고, 서비스가 작을 때는 성능에 민감하지 않아도 괜찮다. 하지만, 서비스가 커지고 배치가 처리해야 하는 데이터의 양이 증가하면서 배치의 실행 시간도 같이 증가할 것이다. 예를 들어 매일 새벽 3시에 시작하는 배치의 실행 시간이 점진적으로 증가하여 9시까지 실행되고 있다면 문제가 될 수 있고, 1시..

Dev 2024.05.21

과학에서 신으로

언제, 왜 메모했는지 이제는 기억에 남아있지 않은 읽어볼 도서 목록에 있던 책 중 하나로 2007년에 번역서가 출간된 꽤 오래된 책이다. 읽던 중 '고타마’가 언급되어 작년에 읽었던 '싯다르타’가 생각나면서 왠지 모르게 반가웠다. 제목에 '신’이 명시되어 종교적인 색채가 강할 것으로 생각했는데 그렇지는 않았다.이 책은 새로운 세계관의 주요 요소와, 의식이 어떻게 과학과 영혼의 연결고리가 될 수 있는지에 대한 내 견해일 뿐이다. - 피터 러셀이 책의 제목으로 챕터 1의 제목인 '과학에서 의식으로’가 더 어울린다고 생각한다. '신', '영혼'보다 '의식', '마음’에 대한 접근이 주를 이룬다. 인간이 언어를 사용하면서 얻는 이점이 서로의 지식을 공유하고 소통하면서 발전하는 것에 있다고 막연히 이해하고 있었다..

Book Shelf 2024.04.06

가상 면접 사례로 배우는 대규모 시스템 설계 기초 2

책을 손에서 놓지는 않았었는데, 독서 후기를 정리한 지가 벌써 꽤 오래되었다. 다 읽은 책을 덮고 내용을 복기하며 글로 정리한다는 게 은근히 시간이 들어가는 작업이긴 하다. 현재 회사로 이직할 때 디자인 인터뷰라는 다소 생소한 테크 인터뷰 과정을 지원자 입장에서 거쳤고, 최근에는 같은 과정을 면접자 입장에서 진행하고 있다. 이와 관련된 기술 도서 하나를 개인적으로 추천하려고 한다. 코딩 테스트에는 많이들 익숙하지만, 디자인 인터뷰는 아직 낯설어 하는 분들이 많다. 이 책이 많은 도움이 될 것이라고 생각한다. 이 책은 2021년에 출간된 '가상 면접 사례로 배우는 대규모 시스템 설계 기초’ 도서에 이은 후속작으로 분량이 2배 정도 늘어난 것 같다. 전작은 시스템 아키텍처에 대한 가벼운 소개 정도로 추상화 ..

Dev 2024.03.16

고도를 기다리며

어느 날 내가 좋아하는 미드 '하우스 (House M.D)'를 다시 보다가 예전에는 그냥 그런가 보다 하고 넘겼던, 저 대사 '걔들보단 고도가 빨리 올걸요.'의 컨텍스트가 궁금해졌다. 뉘앙스는 '쟤들은 매우 늦을 것이다.'를 의미한다는 것을 굳이 '고도’가 누군지 몰라도 이해할 수는 있다. 하지만 그래서, '고도’는 누군데? 저 대사에 등장하는 '고도’가 궁금해서, '고도를 기다리며’를 찾아서 읽었다. 매우 얇지만, 금방 읽히지는 않았다. 일단, 소설이 아니다. '햄릿’과 같이 자주 접하지 않았던 아래와 같은 형식의 희곡이다. 침묵. 둘이 다 움직이지 않고 서 있다. 두 팔은 흔들거리고 고개를 푹 숙인 채 무릎에는 맥이 빠졌다. 에스트라공 (힘없이) 우린 꽁꽁 묶여 있는 게 아닐까? (사이) 안 그래? ..

Book Shelf 2023.10.29

진화적 아키텍처

감사하게도 한빛미디어 출판사에서 도서 리뷰 요청을 해주셨다. 책도 보내주셨지만, 이제 종이책은 보기 힘들어서 알라딘 이북으로 직접 구매해서 봤다. 그러므로, 이 글은 직접 구매한 도서를 읽고 간단히 정리하는 것으로 그동안의 도서 후기와 다르지 않다. 얼마 전에 봤던 '소프트웨어 아키텍처 The Hard Parts’ 저자의 신간이다. 책의 표지에는 '개정판'이라는 언급이 없는데, 이 책은 2017년에 출간된 'Building Evolutionary Architectures: SUPPORT CONSTANT CHANGE'의 개정판이다. 진화적 소프트웨어 아키텍처는 여러 차원에 걸쳐 유도된 변화와 점진적 변화를 지원한다. 이 책은 위와 같은 정의를 어떻게 실현할 수 있는지에 대한 세부적인 사항을 설명한다. 그중..

Dev 2023.09.24

자바 알고리즘 인터뷰 with 코틀린 - 102가지 알고리즘 문제 풀이로 완성하는 코딩 테스트

베타리더로 참여했던 '자바 알고리즘 인터뷰 with 코틀린 - 102가지 알고리즘 문제 풀이로 완성하는 코딩 테스트' 도서가 곧(2023년 9월 20일) 출간됩니다. 전작도 재밌게 봤었고, 이번 신작도 미리 읽어보면서 재밌었습니다. https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=324537416 자바 알고리즘 인터뷰 with 코틀린 코딩 테스트와 알고리즘 인터뷰를 준비하는 개발자들을 위한 최고의 책 『파이썬 알고리즘 인터뷰』가 자바와 코틀린 코드로 무장하고 한층 업그레이드되어 돌아왔다! 200여 가지가 넘는 풍부 www.aladin.co.kr

Dev 2023.09.14

소프트웨어 아키텍처 The Hard Parts

얼마 전에 발표자로 참여했던 카카오 테크밋 행사의 패널 토의에서 리팩터링 전과 후의 차이를 수치로 측정할 객관적인 지표에 대한 질문의 답변으로 설명한 내용 중에 발표에서 소개했던 '코드 복잡도'와 이 책에서 읽었던 피트니스 함수에 대해서 간단히 소개했었다. 이 책은 예전에 소개했던 '소프트웨어 아키텍처 101'(이하 101)의 후속으로 많은 내용이 101과 이어지며, 101은 저자가 2명이었는데, 이 후속작은 저자가 4명으로 늘었다. 그 영향인지 가상의 팀을 구성하고 대화체로 상황을 설명하는 방식이 추가되었지만, 책의 분위기는 크게 달라지지 않았다. 101에서 계속 강조하던 트레이드오프의 중요성도 계속 강조된다. 소프트웨어 아키텍처에서는 최고의 설계를 고집하지 마세요. 그 대신에 나쁜 것 중에서 제일 나..

Dev 2023.08.06

gdbserver ptrace issue on Apple Silicon M1/M2

Docker's Multi-architecture support 애플 실리콘 칩을 기반으로 실행되는 macOS를 위한 'Docker Desktop For Mac'은 애플 실리콘 칩셋(이하 AArch64)에서 AMD64로 빌드된 이미지의 컨테이너 실행을 위해 Qemu 가상화를 사용한다. 'The Magic Behind the Scenes of Docker Desktop'와 4.1.3.0 Release note에서 관련 내용을 확인할 수 있다. 이 글은 이전 포스팅 'Full Remote Mode Of CLion With Docker'(이하 이전 포스팅 1번)와 'Remote Debug via GDB/gdbserver Of CLion With Docker'(이하 이전 포스팅 2번)에서 공유한 내용을 AArc..

Dev 2023.06.06

Sharing Containers Across Multiple Docker Compose

배경 실무에서 개발 중인 여러 프로젝트의 로컬 개발 환경에서 통합 테스트를 수행하기 위해 Docker Compose(이하 컴포즈)를 사용하고 있다. A라는 서비스를 실행하려면 MySQL, Zookeeper, Memcached가 필요하고, B라는 서비스를 실행하려면 MySQL, Zookeeper, Redis가 필요하다. 이렇게 서비스마다 필요한 외부 서비스(이하 컨테이너)들이 겹치는 것과 그렇지 않은 것이 있다. 중복되는 컨테이너들은 컴포즈의 컨테이너 네이밍 기능과 포트 매핑 기능으로 호스트에 노출하는 컨테이너의 이름과 포트를 서로 달리하여 각 프로젝트가 모두 자신만의 컨테이너를 사용하도록 구성되어 있다. 모두 A, B, C, D 이렇게 4개의 서비스가 이런 방식으로 구성되어 있고 서로 독립된 환경으로 그..

Dev 2023.05.29
반응형