[ Dev/Database ]Redis 자료구조 (🚧 작성중..)2026-10-02 20:31:50지난 포스팅에서 언급했듯이 Redis에서는 String, List, Set, Hash, Sorted Set 등 다양한 자료구조가 있다.자료구조마다 지원되는 명령어가 다르므로 명령어를 자료구조 마다 구분해서 익히는게 중요하다. 또 중요한 점은 Redis에서는 이미 존재하는 키에 쓰기 작업을 하면 기본적으로 덮어쓴다. 하지만 특정 옵션을 지원해주기 때문에 키가 있으면 저장, 키가 없을 경우 저장하는 형태로 사용도 가능하다. String - 문자열, 숫자, 이진 데이터Redis에서 가장 기본이 되는 타입으로 문자열, 이진 데이터 등을 담을 수 있다.String은 '문자열'을 뜻하지만, 실제로는 최대 512MB까지의 모든 데이터를 담을 수 있는 저장소이다.담을 수 있는 것문자열, 숫자(정수, 부동소수점), 이미..
[ Dev/Database ]Redis 개념과 특징2026-09-30 18:06:37Redis(Remote Dictionary Server)란?Redis는 네트워크를 통해 내 컴퓨터 메모리처럼 자유롭게 확장해서 쓸 수 있는 거대한 공유 메모리 기반의 NoSQL 데이터베이스다.다양한 자료구조와 메모리에 데이터를 저장하기 때문에 빠른 성능과 비즈니스 요구사항에 맞춰 복잡한 로직을 Redis로 간단히 처리할 수 있다. 예를 들어 글로벌 대규모 서비스에서 아래와 같은 활용 사례들이 있다.SNS의 수억 명의 타임라인: 각 유저의 타임라인 정보를 Redis의 List 자료구조에 미리 담아, 유저가 접속할 때 DB에 가지 않고 Redis에 있는 정보를 제공선착순 이벤트와 재고 관리: 원자적 연산을 보장, 수백만 건의 주문이 몰리는 상황에서 DB 부하를 방지실시간 랭킹 시스템: Redis의 Sorte..
[ Dev/Book ][BOOK - 객체지향의 사실과 오해] Chapter 1-2.2025-08-13 22:21:25최근 다수의 IT 회사 기술 면접 및 과제에서 의존성 주입을 프레임워크 없이 손코딩, 객체지향 개념 기반 서버 개발 과제 등 객체지향에 대한 개념과 이론이 중요하다는 것을 깨달았다. 아직도 명확하게 객체지향에 대해서 설명하려고 하면 어떻게 설명해야 할지 떠오르지 않는다. 그래서 이 책을 읽고 정리하려고 한다. 저자의 소개에 따르면 이 책은 객체지향 프로그래밍 실력을 끌어올리기 위한 책보다는 객체지향에 대한 다른 자료들을 읽을 때 미리 알고 있으면 도움이 될 만한 기본 배경과 지식을 다루는 이론 및 교양적 수준의 책이다.그래서 사실 읽으면서도 이해가 되는 듯하면서도 안되는 듯해서 여러 번 다시 되짚어 보면서 읽어본 것 같다.앞으로 책을 읽고 정리하면서 객체지향에 대한 개념을 조금 더 명확히 해보자!🫡Ch..
[ Dev/Book ][BOOK - 클린코드] Chapter 15. JUnit 들여다보기2025-04-09 00:20:07JUnit 프레임워크JUnit은 자바 개발자라면 누구나 사용하는 유명한 테스트 프레임워크입니다.이 챕터에서는 JUnit 코드의 일부를 살펴보며 클린 코드의 원칙이 어떻게 적용되었는지 분석합니다.우리가 살펴볼 모듈은 문자열 비교 오류를 파악할 때 유용한 ComparisonCompactor 클래스입니다. 이 코드는 잘 분리되어 있고, 표현력이 적절하며, 구조가 단순합니다. 저자들이 모듈을 아주 좋은 상태로 남겨두었지만, 보이스카우트 규칙에 따라 한번 개선해보겠습니다.원본 코드package junit.framework;public class ComparisonCompactor { private static final String ELLIPSIS = "..."; private static final Stri..
[ Dev/Book ][BOOK - 클린코드] Chapter 13. 동시성(Concurrency)2025-03-17 22:10:44이번 장에서는 소프트웨어 개발에서 가장 복잡하고 까다로운 영역 중 하나인 '동시성(Concurrency)'을 다룹니다.동시성 프로그래밍의 원칙과 패턴, 그리고 주의사항에 대해 설명합니다.동시성의 기본 개념동시성은 여러 작업이 동시에 진행되는 것처럼 보이는 프로그래밍 패러다임입니다. 이는 병렬성(Parallelism)과는 다른 개념입니다. 동시성은 단일 프로세서에서 여러 작업을 번갈아가며 수행함으로써 동시에 진행되는 것처럼 보이게 하는 반면, 병렬성은 실제로 여러 프로세서에서 작업을 동시에 수행합니다.동시성이 필요한 이유동시성이 필요한 주요 이유:응답성 향상: 사용자 인터페이스의 반응성을 높일 수 있습니다. 예를 들어, 긴 계산을 수행하는 동안에도 UI는 계속 반응할 수 있습니다.성능 향상: 현대 컴퓨터는..
[ Dev/Book ][BOOK - 클린코드] Chapter 12. 창발성(Emergence)2025-03-16 21:01:51이 장에서는 어떻게 단순한 규칙들이 모여 복잡하고 우아한 설계를 '창발'시키는지에 대해 설명합니다. 💡 창발성의 개념 창발성이란 간단한 규칙들이 모여 복잡한 시스템을 만들어내는 현상을 말합니다. 마치 개미 한 마리는 단순한 규칙을 따르지만, 개미 군집은 놀랍도록 복잡하고 효율적인 시스템을 형성하는 것과 같습니다. 소프트웨어 설계에서도 몇 가지 간단한 설계 원칙들을 따르면 '좋은 설계'가 자연스럽게 창발된다는 것이 이 장의 핵심입니다. ">💡창발성의 개념창발성이란 간단한 규칙들이 모여 복잡한 시스템을 만들어내는 현상을 말합니다. 마치 개미 한 마리는 단순한 규칙을 따르지만, 개미 군집은 놀랍도록 복잡하고 효율적인 시스템을 형성하는 것과 같습니다. 소프트웨어 설계에서도 몇 가지 간단한 설계 원칙들..
[ Dev/Book ][BOOK - 클린코드] Chapter 11. 시스템2025-03-16 20:52:06이 장은 코드 레벨을 넘어서 시스템 전체의 설계와 구조에 관한 중요한 원칙들을 다루고 있습니다.시스템 구축과 사용의 분리이 장의 핵심 원칙 중 하나는 '시스템 구축'과 '시스템 사용'을 명확히 분리해야 한다는 것입니다.소프트웨어 시스템은 애플리케이션 객체의 생성과 객체들의 의존성 연결을 '시작 단계'에서 처리하고, 그 후 '실행 단계'에서는 이미 준비된 객체들을 사용하는 방식으로 설계되어야 합니다. 이를 위한 여러 접근법이 소개됩니다:Main 분리: 모든 설정 로직을 main 함수나 main이 호출하는 모듈에 두어 나머지 시스템에서는 모든 객체가 적절히 구성되었다고 가정하게 합니다.팩토리(Factory): 객체 생성 로직을 팩토리 클래스로 분리하여 시스템이 필요할 때 객체를 생성하도록 합니다.의존성 주입..
[ Dev/Book ][BOOK - 클린코드] Chapter 10. 클래스2025-03-16 18:35:45이전 장에서는 코드 행과 코드 블록을 올바르게 작성하는 방법, 함수 구현 방식, 그리고 함수 간의 관계에 대해 다뤘습니다. 이번 장에서는 한 단계 더 나아가, 깨끗한 클래스를 만드는 원칙에 대해 살펴봅니다.클래스 체계클래스를 정의할 때는 표준적인 자바 관례를 따르는 것이 좋습니다.변수 선언 순서public static final 정적 상수 → 맨 처음private static final 정적 비공개 변수 → 다음private 인스턴스 변수 → 그다음공개 변수는 거의 필요하지 않음메서드 선언 순서공개(public) 메서드가 가장 먼저비공개(private) 메서드는 자신을 호출하는 공개 메서드 직후에 배치이처럼 클래스 내부의 구성 요소를 논리적인 순서로 정리하면, 위에서 아래로 읽기 쉬운 구조(신문 기사처럼..