보고, 쓴 것들

more

[서평] 파서블 @김익한 - 기록으로 내 삶을 변화시키는 방법

나는 요 몇년간 불렛저널을 기록하고 있는데, 최근 들어서 쓰는 건 좋은데 내 인생에 도움이 되고 무언가 남는다는 느낌이 안 들어서 기록하는 것을 향상시키고자 이 책을 읽게 되었다. 항상 무언가 계획을 세우면 시간단위로 세우거나 뭐든지 하루계획이던 연간계획이던 실천 가능한 것들을 나열하곤 했는데, 이 책을 읽으면서 사실 우리의 손안에서 계획을 세우고 그나마 통제할수 있는 단위는 한달이라고 한다. 한달은 목표의 아웃풋의 이미지만 떠올릴 수 있고, 실천의 계획 단위는 일주일 부터 시작된다고 한다. 그리고 하루의 계획은 내가 오늘 가장 중요하게 생각하는 것을 선택하고 그것을 구체적으로 실행하는 것을 상상하는 구상 기록으로부터 계획이 시작된다고 한다. 지금은 한주 계획을 시간이나 구체적인 하루하루 할일 단위로 적..

독서 2024.03.25 0

[서평] 퓨처셀프 @벤저민 하디 - 미래의 나와 현재를 연결하라

이번에 읽은 책은 '퓨처 셀프' 라는 책이다. 내 책장에 있는 책들 중 대부분은 신영준 박사님과 고영성 작가님이 계시는 '스터디언' 이라는 유투브 채널에서 추천해준 책들이 많은데, 이 책도 그 중 하나이다. 나는 항상 뭔가 선택의 기로에 놓였을 때 이 선택을 미래의, 10년 뒤의 내가 잘한 선택이라고 생각할까? 하고 생각하고 했다. 퇴사를 하고 이직을 한다거나, 하고싶었던 무언가에 도전한다거나 할 때 말이다. 이 책의 소개를 접했을 때 나의 이런 생각 방식과 비슷하다는 느낌이 들어서 책을 읽기 시작했다. 내가 평소 큰 결정을 할 때 생각하던 방식을 일상의 여러 경험들에 적용하고, 목표들에 적용하는 방식으로 책 내용을 펼쳐나가는 느낌이라 꽤 재밌게 읽었다. --- 여기부터는 책 내용 스크랩입니다 -----..

독서 2023.12.30 1

[서평] 함께 자라기. 애자일로 가는 길 @김창준

최근 개발을 하면서 나를 지켜본 결과 약간의 매너리즘을 느끼며 이전보다 내가 열심히 하지 않는다는 느낌이 들었고, 이번달에 읽을 책을 고르던 중 이 책이 현재의 나에게 도움이 될것같아 읽게 되었다. 읽어 보면서 이 책을 좀더 빨리 완독했으면 어땠을까? 하는 생각이 드는 책이였다. 개발자로써 중요한 스킬은 알고리즘 풀이 능력, 프레임워크에 대한 지식과 사용 방법, 프로그래밍 기법을 인지하고 잘 적용하는 기법, 문제해결을 해본 여러 경험 등이 있다고 주로 생각되는데 사실 '일' 이라는 관점에서는 다른 사람과 협업하는 것이 가장 중요한것 같다. 위 스킬들이 아무리 뛰어나도 이용되지 않거나, 의미없는 방향으로 이용하거나, 스킬이 더이상 늘지 않는다면 무용지물이기 때문이다. 뭐 당연히 개발자로써의 기반지식과 스킬..

독서 2023.07.30 0

[서평] 달과 6펜스 @서머싯 몸

지금 나는 평소대로 생각나는 대로 글을 쓰려다가, 어떤 좋은 문구와 인용으로 글을 시작하면 어떨까 하고 기교적인 생각을 하고 있다가, 정말로 내 맘속에서 우러나오는 글을 써야 되는 게 아닌가? 하는 생각을 하고 있었다. 왜 이런 생각을 했고 이런 TMI 같은 내용을 굳이 글에 쓰냐면 이 책의 주제이자 주인공과도 같은 찰스 스트릭랜드의 행동과 인생을 생각하자니 이런 기교 같은 행동과 멋들어지게 쓰려는 나의 시도가 나다운 것인지, 내가 진짜 표현하고 싶은 것을 표현하고 싶어서 쓰는 것인지 하는 의문이 들어서이다. 책은 주인공인 '나'를 통해 찰스 스트릭랜드라는 인물의 일대기를 설명해 준다. 평범한 런던의 증권 브로커였던 스트릭랜드는 갑작스레 화가가 되겠다고 가정을 내팽개치고 맨몸으로 집을 나가는데, 오직 예..

독서 2023.05.29 0

[서평] 나는 나에게 왜 솔직하지 못할까 - 컴 클로저 @일자 샌드

회사에서 읽어보라고 준 책인데, 평소 두껍고 레퍼런스만 가득한 책을 읽다가 한국어 제목만 보고 감성책인가? 싶어서 이제 살짝 쉬운 책을 좀 읽으며 쉬자는 마음에거 읽었다. 근데 아니나 다를까 저자의 연구와 다른 연구결과로부터 심리 행동학적인 개념을 도입해서 왜 우리는 이런 행동을 할까? 에 대한 이야기를 하는 약간은 무게가 있는 책이였다. 우리는 사람들과 관계를 맺으면서 나도 모르게 피하기도 하고, 의존 하기도 하고, 자기 자신을 탓하기도 하면서 산다. 저자는 이러한 행동 습관들을 '자기 보호' 라는 습관이라고 설명한다. 자기 보호라는 것은 어린 시절 겪었던 내 주변 상황에 적응하기 위해서 생긴 습관과도 같은 행동을 의미하는데, 이 책에서는 크게 대인적 자기보호와 내면적 자기보호로 나뉜다고 말하고 있다...

독서 2023.03.26 0

[서평] 오래도록 젊음을 유지하고 건강하게 죽는 법 @ 스티븐 R. 건드리 - 2

내용을 정리하기에 앞서, 책을 읽고 인터넷의 몇몇 기사나 블로그 포스팅 등을 참고 해 본 결과 이 책의 내용이 100% 맞다고 단정짓기에는 아직 무리가 있는 것 같다. 일부 내용은 맞을수도 있으나 특정 식재료의 이점을 배제하고 안좋은 점만을 강조하거나 책에서 주장하는 근거를 뒷받침하는 실험 등이 일상 생활에서 섭취하는 정도로는 관련이 없는 경우가 있다고도 한다. 이게 정말 맞는지 확인하려면 레퍼런스의 논문과 실제 우리가 섭취하는 음식의 함유량 등을 비교하며 판단을 할 줄 알아야 할텐데, 이런 부분은 시간과 노력이 필요한 부분이라 꽤나 불편한 것 같다. 이런 일을 대신 해주는 커뮤니티가 있다면 정말 좋을텐데 말이다.. 렉틴을 피하라 인간은 수렵활동으로 생존을 유지하던 시절부터 쌍떡잎식물을 주로 먹으며 생존..

독서 2023.01.22 0

개발자의 길

more

[대용량 처리] K6를 활용한 대용량 REST API 요청에 대한 부하 테스트

부하 테스트란? 일반적으로 REST API 서버의 특정 기능을 개발하여 상용 서비스에 올릴 때에는 기본 기능들은 잘 동작 하는지, 여러 테스트케이스에서 예외 상황은 발생하지 않는지, 엣지 케이스에서의 버그로인한 서버 다운의 가능성은 없는지 등을 테스트 한다.  위 테스트들은 개발자의 유닛/통합 테스트, QA 팀에서의 기능 테스트 등으로 충분히 잡을 수 있으나, 서버가 많은 요청을 받을 때에도 잘 동작하는지는 위 방법으로는 테스트하기 어렵다. 서버가 많은 요청에 대해 잘 버티는지를 테스트 하는 방법을 "부하 테스트" 라고 한다. 물론 이런 부하 테스트를 간편하게 실행하게 해줄 여러 도구들은 이미 잘 개발되어 있고, 이 포스팅에서는 여러 툴중 간단하게 사용이 가능한 K6 를 사용하여 테스트를 해보고자 한다..

개발자의 길 2025.02.28 0

[MSA] 분산 환경에서의 트랜잭션 처리 - 분산 트랜잭션과 보상 트랜잭션

서론 단일 서버와 DB 로 구성되는 Monolithic 서버에서는 하나의 API 로직 내부에서 특정 부분에서 실패가 발생 한다면, DB 의 rollback 을 이용해서 commit 전에 작업하던 모든 데이터를 처리하기 전 상태로 돌려놓을수가 있다.   하지만 서비스의 규모가 커지다 보면 성능이나 관리적 이슈로 인해 MSA(Micro Service Achitecture)로 넘어가게 되는데, MSA 에서는 API 서버와 DB가 서비스별로 나누어져 있다. 서버와 DB 가 나누어져 있기 때문에 Monolithic 에서처럼 DB rollback 만으로는 실패한 트랜잭션의 원복이 어렵게 된다. 이렇게 여러 리소스가 나누어져 있을 때의 트랜잭션을 "분산 트랜잭션" 이라고 하고, 분산 트랜잭션에서 실패가 발생했을 때 ..

개발자의 길 2025.02.13 1

[Database] MySQL 에서 Index 를 설계하고 추가하는 방법

이전에 올렸던 미니 e-commerce 프로젝트에서 제공하는 API 의 조회성능을 올려서 서비스를 좀더 향상시키고자 한다. 바로 이전 포스트에서 Redis 를 활용한 원격 캐싱 서버를 활용해 조회 성능을 높였는데, DB 인덱스를 추가하는 방법으로도 조회 성능을 높일 수 있다.  현재 서비스를 상용으로 올려서 운영중인 프로젝트가 아니기 때문에, 어떤 쿼리가 가장 많이 수행되고 있는지는 정확한 파악이 어렵다. 하지만 비즈니스적으로 자주 조회될 쿼리가 무엇인지는 추측이 가능하고, 테스트 코드를 실행시켰을 때 어떤 쿼리가 수행되는지 정도는 파악이 가능하다.  현재 제공하는 기능에서 사용하는 쿼리와 적용해볼 인덱스, 그리고 성능 향상점은 아래에 적어 놓았다.  테스트 데이터랜덤 값으로 생성한 100만개의 데이터..

개발자의 길 2025.02.12 0

[Cache] 백엔드 서버 입장에서의 캐싱 전략과 활용 방안에 대해

캐시 캐시는 데이터를 임시로 저장해 두는 임시 저장 장소를 의미한다. 모든 저장 장치는 각자 저장 속도나 읽기 속도가 다른데, 주로 좀더 빠른 저장이나 읽기 속도를 가졌지만 좀더 용량이 적거나 저장 시간이 적은 저장 장치를 캐시 역할로 둔다. 임시적으로 데이터를 저장해 두고 빠르게 읽기/쓰기를 하기 위해 캐시를 이용한다.  간단하게 예를 들자면 우리 컴퓨터의 SSD 와 RAM 메모리가 있다. 같은 가격대비 읽기쓰기 속도는 RAM 메모리가 더 빠르지만, 용량은 SSD 가 더 크고, RAM 메모리는 컴퓨터를 재부팅 시에 데이터가 휘발된다는 점이 있다.컴퓨터에서 엑셀을 실행시키고 스프레드시트를 작성하고, 읽는 과정에서 실시간으로 작업중인 데이터가 있다고 치자. 이 상황에서 데이터를 하나씩 읽고 작성할 때 마다..

개발자의 길 2025.02.04 1

[항해플러스] 미니 e-commerce 프로젝트에서 발생가능한 동시성 문제와 그 해결법

서론 및 개요인터넷에서 상품을 결제하고 배송을 해주는 e-commerce 서비스는 여러 기능들을 제공한다. 내 계정에 포인트를 충전하거나, 상품을 구매하기 위해 어떤 상품을 얼마나 넣는지 등을 결정하여 결제를 진행하기도 하고, 이벤트성으로 쿠폰을 발급하거나 특별 할인 등을 진행하여 매우 값싼 상품을 일시적으로 판매하기도 한다.이런 기능들은 대개 사람들이 몰려서 API 요청들이 많이 몰리기 마련인데, 이때 동시에 같은 작업을 진행하다 보면 데이터의 정합성이 맞지 않거나 오류가 나는 등의 '동시성 문제' 가 생길 수 있다.항해플러스를 진행하면서 미니 e-commerce 프로젝트를 진행하고 있는데, 이번에 내가 구현한 서비스에서 제공하는 유스케이스에서 어떤 동시성 문제가 있을지 알아보고 이것들을 어떻게 해결할..

개발자의 길 2025.01.19 0
반응형