목록전체 글 (281)
개발자는 기록이 답이다
기존에 프로젝트에서 Redis만 사용해 캐시를 구현했었고, 로컬 캐시의 필요성을 깊이 고려해 본 적이 없었습니다. 하지만 최근 네카라쿠배당토 중 면접에서 로컬 캐시 설계 관련된 질문을 받았고, 그때 제대로 답변하지 못한 경험을 되돌아보며 이를 복기하고, 보완하고자 포스팅을 작성하게 되었습니다. 데이터베이스에서 Disk I/O를 줄이기 위해 일반적으로 Redis와 같은 메모리 저장소를 도입하는데, 이런 외부 저장소에 의존할 경우 과부하가 발생하거나 단일 장애 지점(SPOF)이 될 위험이 있습니다. 모든 데이터를 외부 저장소에만 캐시하지 않고 내부적으로 관리하려는 경우 로컬 캐시를 도입하게 됩니다. 로컬 캐시를 사용할 경우, 예를 들어 @CachePut 어노테이션이나 write-back과 같은 캐시 전략을 ..
저는 Redis가 싱글 스레드로 동작하는데도 불구하고, 특정 명령어를 사용할때 동시성 제어가 필요있고 없고의 차이점에 명확하게 아하! 모먼트를 가질 수는 없었습니다. 이러한 고민을 해결하기 위해 Redis 명령어들이 어떻게 동작하는지 살펴보았습니다. 이번 포스팅에서는 이 주제에 대해 알아보고자 합니다. 📌 왜 GET과 SET을 같이 사용하는 것은 동시성 이슈가 발생할까?Spring Boot 프로젝트에서 Redis를 사용하다 보면, GET과 SET 명령어를 함께 사용할 때 동시성 이슈가 발생하는 경우가 있습니다. 그 이유는 Redis는 멀티플렉싱 I/O를 활용하여 여러 요청을 받으면서, 실제 요청들은 싱글 스레드로 순차적으로 처리하기 때문입니다.참고: 아래 예시에서는 GET 대신 SCARD를, SET 대..
최근 2달간 면접에서 DDD에 대한 질문을 받고나서, DDD에 대해 알아봐야겠다고 생각했습니다.카카오뱅크, 힐링페이퍼, 뉴플로이 회사에서 총 3번 정도 DDD 질문을 받고 나니 그 필요성을 느끼게 되었습니다.유튜브로 찾아보기도 했는데, 사실 "전략적 설계"와 "전술적 설계"가 무엇인지 와닿지 않았습니다. 그래서 구체적으로 와닿을 만한게 어떤 게 있을까? 고민하면서 주변 개발자분들과 얘기를 나누다 스터디를 진행하기로 했습니다. 제가 DDD 입문서로 추천받은 책은 바로 최범균님의 'DDD Start 도메인 주도 설계 구현과 핵심 개념 익히기' 입니다.추석 연휴 동안 다 읽는 것을 목표로 했는데, 아직 10장, 11장은 읽지 못했지만 바운디드 컨텍스트까지 읽은 내용을 정리해봤습니다. 해당 책은 DDD의 철학..
📌 절대 주소 지정과 상대주소 지정의 차이점은 뭘까요?절대 주소 지정: 메모리의 물리적인 주소를 직접적으로 참조하는 방식입니다. 실행할 프로그램이 특정 메모리 주소에 고정되어 있고, 프로그램 내에서 명령이나 데이터를 참조할 때 그 주소를 그대로 사용합니다.상대 주소 지정: 기준 주소(기본 주소)를 바탕으로 상대적인 위치를 지정하는 방식입니다. 예를 들어, 현재 위치에서 몇 바이트 떨어진 곳을 참조할 수 있으며, 이를 통해 메모리 관리가 유연해집니다.절대 주소는 물리메모리 주소, 상대주소는 논리메모리 주소를 의미논리적 주소프로세스마다 독립적으로 가지는 공간 (=각 프로세스마다 0번지부터 시작하는 공간)프로그램이 컴파일되면 생성되는 주소CPU가 보는 주소물리적 주소프로세스가 실행되면 실제 메모리에 올라가는..