기타 16

Redis 자료구조 이해하기

Redis 는 기본적으로 key-value 구조의 저장 방식을 갖지만 Lists,Sets, Sorted Sets, Hashes, Streams 같은 다양한 저장 방식을 제공합니다.  1. Stringskey-value 가 일 대 일 관계입니다.데이터 타입: Binary-safe strings - 알파벳, 숫자, 한글,. 이미지 등을 사용할 수 있습니다.최대 길이: 512mb 2. Listskey-value 가 일 대 다 관계입니다.value 는 입력한 순서대로 저장됩니다.주로 Queue -들어오는 데이터를 순서대로 처리할 때- 이나Stack-웹브라우저의 백버튼처럼 되돌아 갈 때-으로 사용됩니다.value 가 저장되면 key(list) 가 생성됩니다. key에 value가 하나도 없으면 해당 키는 삭제됩니..

기타 2025.01.07

Redis - Lettuce , Redisson 의 Lock 구현

1. Lettuce를 이용한 직접 구현특징:Lettuce는 Redis와 비동기로 통신할 수 있는 자바 클라이언트 입니다.직접 분산 락을 구현하려면 **SETNX** 와 **EXPIRE** 명령어를 활용해야 합니다. public boolean acquireLock(String lockKey, String requestId, long expireTime) { String result = redisTemplate.execute((RedisCallback) connection -> { return connection.set( lockKey.getBytes(), requestId.getBytes(), Expiration.from(expi..

기타 2025.01.07

회고 - Jmeter 를 활용한 성능 테스트

성능 테스트를 위한 도구: Jmeter, K6, nGrinder 등성능 테스트 결과 시각화를 위한 도구: influxdb, prometheus, grafana 등 회고 - 정말 많은 일이 있었습니다. 더보기저는 자바스크립트 언어를 모르기에 Jmeter 를 쓰는 게 현명했습니다. 하지만 GPT 의 도움과 팀원들의 응원에 K6를 골랐습니다....  정말 많은 일이 있었지만 간단하게 정리하고자 합니다. 총 8가지 경우의 수가 있었습니다. 1. Jmeter, K62. influxdb, prometheus3. docker O, docker X 맨처음 Jmeter 하나만으로 테스트를 성공했지만(여기서부터 K6 도전) 시각화 자료가 너무 '구려서' grafana 를 떠올리게 되었습니다. 그래서 위와 같은 8가지의 경..

기타 2025.01.01

로컬 캐시(Local Cache) vs 글로벌 캐시(Global Cache)

캐시는 크게 **로컬 캐시(Local Cache)**와 **글로벌 캐시(Global Cache)**로 구분됩니다. 각 유형은 데이터가 어디에 저장되고 어떤 방식으로 접근 가능한지에 따라 다릅니다. 1. 로컬 캐시 (Local Cache) - 공유X로컬 캐시는 개별 서버 또는 애플리케이션 인스턴스의 메모리 내에서 작동하는 캐시입니다. 이 캐시는 데이터 접근 속도가 빠르지만, 여러 인스턴스 간의 데이터 공유가 어렵습니다. 특징위치: 캐시가 애플리케이션이 실행 중인 서버 내부(메모리나 디스크)에 저장됩니다.속도: 서버 메모리를 직접 사용하므로 매우 빠릅니다.격리: 각 서버가 독립적으로 데이터를 캐싱하며, 다른 서버와 캐시 데이터를 공유하지 않습니다.적합한 상황:단일 서버에서만 동작하는 애플리케이션.데이터가 자..

기타 2024.12.29

캐시란 무엇일까?

캐시란 무엇일까?  너는 학교 도서관에서 자주 쓰는 참고서를 종종 빌려와야 해.그런데 매번 도서관까지 걸어가서 책을 빌리고 돌아오려니 너무 귀찮고 시간이 걸려....그래서 그 책을 그냥 네 책상 서랍에 넣어두면 어때?이제는 참고서가 필요할 때마다 바로 책상 서랍에서 꺼내 볼 수 있으니 시간을 훨씬 절약할 수 있어!이 서랍에 책을 두는 방법이 바로 캐싱이야. 캐시란 데이터를 빠르게 사용할 수 있도록 미리 저장해 두는 임시 저장소를 뜻합니다. (이제 캐시라는 말에 '자주', '일시적', '고속', '데이터 저장소'를 떠올립시다.) 캐싱이란 캐시를 사용하는 것입니다. 캐시의 주목적은 데이터 검색 성능을 향상시키는 것입니다. 메모리 계층 구조에서 가장 빠른 레벨에 위치한 저장소라고 할 수 있습니다.  캐시는 일..

기타 2024.12.23

동기 vs 비동기 (feat. Blocking vs Non-blocking)

동기는 동시에 일어난다는 뜻입니다. 무엇이 동시에 일어난다는 것일까요? 바로 요청과 결과입니다. 동기란 요청과 그 결과가 동시에 일어난다는 것인데요. 동기 방식으로 동작한다면, 요청을 하면 시간이 얼마가 걸리든지 요청한 자리에서 결과가 주어져야 합니다.  은행 창구를 예로 들 수 있습니다. 은행 접수원은 고객의 요청에 시간이 얼마가 걸리든지 그 자리에서 결과를 줍니다. 전산 처리가 오래 걸릴 것 같다고 다른 고객을 받으며 일하진 않죠.   비동기는 동시에 일어나지 않는다는 뜻입니다. 요청과 결과가 동시에 일어나지 않는다는 것인데요. 요청을 처리하는 시간이 오래 걸린다면 그 시간동안 다른 일을 할 수 있음을 내포하고 있습니다. 예를 들어 '스타벅스'를 보겠습니다. 고객 A와 B가 있습니다. 먼저 A가 샌드..

기타 2024.12.23

프로젝트 즉시 교환 서비스에서 상태값

메서드교환의 상태등록 물품의 상태제안 물품의 상태교환 생성PENDINGREGISTERING-교환에 대한 제안 생성PENDINGREGISTERINGSUGGESTING제안 수락IN_PROGRESSREGISTERINGACCEPTED교환 완료 -  updateStatusCompleted()COMPLETEDCOMPLETEDCOMPLETED제안 수락 취소 - cancelAcceptanceOfSuggest() PENDINGREGISTERING PENDING 제안 거절PENDINGREGISTERINGPENDING cancelAcceptanceOfSuggest() - 제안 수락 취소: 수락 -> 채팅 후 변심 -> 수락 취소제안 거절 시 : 제안 물품의 상태를 PENDING 으로 변경 + 교환_제안_물품 테이블에서 데이..

기타 2024.12.18

Docker - linux, windows, mac

Docker: 컨테이너화 기술을 제공하는 오픈소스 플랫폼애플리케이션을 격리된 환경(컨테이너)에서 실행하고 배포할 수 있도록 해줍니다. 이를 통해 개발, 테스트, 배포 등의 과정에서 일관성을 보장할 수 있습니다. CI : Continuous Integration 지속적인 통합  /  CD : Continuous Deployment(Delivery) 지속적인 배포  요약Linux에서는 Docker가 네이티브로 실행됩니다.Windows에서는 Docker를 실행하기 위해 Docker Desktop과 함께 WSL2를 사용하여 리눅스 환경을 가상화하고 그 위에서 Docker를 실행합니다.macOS에서는 Docker가 LinuxKit이라는 가상 머신을 사용해 실행되며, Docker Desktop을 설치하면 별도의 설..

기타 2024.12.17

WSL, Git bash, Terminal

WSL (Windows Subsystem for Linux): Windows 환경에서 Linux 배포판을 실행할 수 있게 해주는 기능용도: Linux 명령어와 소프트웨어를 Windows에서 실행할 수 있도록 돕습니다.주요 특징:Ubuntu, Debian, CentOS 등 다양한 Linux 배포판을 설치해 사용할 수 있습니다.Windows와 Linux 파일 시스템 간에 원활하게 접근이 가능합니다.WSL2는 더 나은 성능과 가상 머신(VM) 기반의 기능을 제공합니다.활용 사례: 개발자들이 Linux 기반 소프트웨어를 Windows에서 실행, 테스트, 개발.  Git Bash: Windows에서 Git 명령어를 실행할 수 있게 해주는 터미널용도: Git 리포지토리 관리를 위한 명령줄 도구로 사용됩니다.주요 특..

기타 2024.12.17

InfluxDB, grafana

InfluxDB: 시계열 데이터베이스(Time Series Database)용도: 시간에 따라 변하는 데이터를 저장하고 관리하는 데 특화되어 있습니다.주요 특징:IoT 데이터, 모니터링 지표, 로그 데이터 등 시간이 중요한 데이터를 다룰 때 사용합니다.SQL과 유사한 Flux 또는 InfluxQL 쿼리 언어를 사용해 데이터를 분석합니다.높은 쓰기 성능과 효율적인 데이터 압축을 제공합니다.활용 사례: 서버 모니터링, 애플리케이션 성능 지표 수집, IoT 센서 데이터 관리.  Grafana: 오픈소스 데이터 시각화 및 모니터링 도구용도: 다양한 데이터베이스(예: InfluxDB, Prometheus, MySQL 등)의 데이터를 차트, 그래프, 대시보드로 시각화합니다.주요 특징:사용자 정의 대시보드를 생성해 ..

기타 2024.12.17