프로의 개발일지
Preview Image

매개변수(Parameter)와 인자(Argument)의 차이

흔히 프로그래밍을 할 때, 매개변수(Parameter)와 인자(Argument)라는 용어를 자주 접하게 됩니다. 두 용어 모두 함수와 관련된 개념이지만, 많은 개발자들이 혼용해서 사용하거나 정확한 차이를 모르는 경우가 많습니다. 따라서 두 용어의 차이를 간략하게 정리해보고자 이번 포스팅을 작성합니다. 1. 매개변수(Parameter) 매개변수는 ...

Preview Image

[Redis] KEYS 대신 SCAN을 써야 하는 이유

Redis를 사용하다 보면 특정 패턴의 키를 찾아야 하는 상황이 자주 발생합니다. 예를 들어 user:* 형태의 모든 사용자 키를 찾거나, session:* 패턴의 세션 키들을 정리해야 할 때가 있죠. 이럴 때 가장 먼저 떠오르는 명령어가 바로 KEYS입니다. 하지만, 프로덕션 환경에서 KEYS 명령어를 사용하면 서비스 장애로 이어질 수 있습니다. ...

Preview Image

[Database] 인덱스(Index) 동작 원리와 장단점

1. 인덱스(Index)란? 인덱스는 데이터베이스 테이블의 조회 속도를 향상시키기 위한 자료구조입니다. 예를 들어, 백과사전의 목차나 색인을 떠올리면 이해하기 쉽습니다. 백과사전에서 특정 내용을 찾을 때, 모든 페이지를 처음부터 읽는 것보다 목차나 색인을 통해 해당 페이지로 바로 이동하는 것이 훨씬 빠릅니다. 데이터베이스 인덱스도 이와 같은 ...

Preview Image

[Spring Data Redis] @Indexed 어노테이션 사용 주의 사항과 문제 해결 방법

Spring Data Redis는 엔터티를 Redis에 매핑할 때, 일반적으로 @Id로 지정된 키를 기준으로만 findById()와 같은 JPA 스타일의 CRUD 메서드를 지원합니다. 그러나 개발을 하다 보면 종종 findByEmail()과 같이 특정 필드를 조건으로 조회가 필요할 때가 있습니다. 이때 유용하게 활용할 수 있는 기능이 바로 @Index...

Preview Image

모듈의 결합도(Coupling)와 응집도(Cohesion)

프로그램이 커지고 복잡해질수록 유지보수, 확장성, 협업 효율성이 더욱 중요해집니다. 이를 위해 소프트웨어는 기능 단위로 나누어 설계되며, 코드의 관리성과 재사용성을 높이게 됩니다. 이처럼 시스템을 잘게 나누어 개발하는 과정을 모듈화(Modularization)라고 하며, 좋은 모듈 구조를 설계하기 위해 꼭 알아야 할 두 가지 핵심 개념이 바로 결합도...

Preview Image

[Nginx 핵심 가이드] 설치부터 설정 파일 구조까지

Nginx는 웹 서버를 구축하거나 정적·동적 콘텐츠를 배포할 때, 가장 널리 사용되는 웹 서버(Web Server) 중 하나입니다. 이번 포스팅에서는 처음 접하는 분들도 이해하기 쉽도록, Nginx의 개념부터 설치 및 실행 방법, 그리고 설정 파일의 구조와 주요 블록별 역할까지 단계별로 정리해보았습니다. 이 포스팅은 Ubuntu 24.04 L...