본문 바로가기

전체글115

Redis 캐시 적용으로 성능 개선하기 목차 개요 캐시(Cache)란? 입찰 생성 시 Redis 캐시 업데이트 최고 입찰 금액 조회시 Redis 캐시 사용 nGrinder 성능 테스트 결론 1. 개요 경매에서 입찰 금액은 실시간으로 관리되고 입찰은 순간적으로 많은 요청이 발생 할 수 있다. 입찰이 많이 몰리게 되면 DB에서 입찰 금액을 빈번하게 가져와 입찰금액이 갱신하고 있는 상황이었다. 최고 입찰액을 가져오는 시간을 줄이고자 DB조회 대신 Redis에서 값을 빠르게 가져와서 응답하고자 하였고 nGrinder로 테스트를 통해 성능이 얼마나 차이나는지 비교해 보자. 2. 캐시(Cache)란? 캐시를 간단하게 말하면 데이터를 미리 복사해 놓는 임시 저장소를 말한다. 접근 시간이 긴 하드디스크를 읽는 대신 빠르게 접근 할 수 있도록 도와주는 역할을.. 2024. 3. 15.
Kafka vs RabbitMQ vs Redis 목차 개요 Kafka RabbitMQ Redis Pub/Sub 결론 1. 개요 Kafka, RabbitMQ, Redis의 Pub/Sub 을 비교하면 각각의 시스템이 메시징 패턴을 구현하는 방식과 그에 따른 성능, 확장성 유연성 측면에서 상이한 특징을 나타낸다. 이 세가지 시스템을 각각의 관점에서 간단하게만 비교해보려고 한다. 2. Kafka 개념 토픽 기반의 Pub/Sub 모델을 사용한다. Producer(게시자)는 특정 토픽에 메시지를 게시하고, Consumer(구독자)는 관심 있는 토픽을 구독하여 메시지를 소비한다. 성능 및 확장성 높은 처리량과 데이터 내구성, 분산 처리에 강점을 가지며, 대량의 데이터 스트림 처리에 최적화되어 있다. 대규모 시스템에서 확장성이 매우 뛰어난다. 유연성 뛰어난 확장성과.. 2024. 3. 12.
[TroubleShooting] 메모리 중요정보 노출 취약점 개선방안 목차개요취약점 파악개선방안결론1. 개요안드로이드 업무에서 보안점검을 받던 중, 앱에서 중요정보가 메모리에 남는다는 취약점이 발견되었다. 중요 정보는 `신분증 이미지`였는데, 서버로 데이터를 전달하고 사용하지 않기 때문에, 가비지 컬렉션의 대상으로 GC가 일어나면 사라질 정보였었다. 하지만, GC가 언제 일어 날지 모를뿐더러, 이런 민감정보(신분증 이미지 뿐만 아니라 계좌정보나 고객의 연락처 등 개인정보)를 사용함에 있어서 주의가 항상 필요했다. 내가 맡은 애플리케이션은 금융앱이라 난독화나 여러가지 보안 솔루션이 있지만, 안심해서는 안된다. 이런 중요 정보들은 사용하지 않는다면, 메모리에 남아 있지 않도록 보호하는 것이 중요하다.어떤 문제점이 있었고 해결은 어떻게 했는지 작성해보려고 한다.2. 취약점 파악.. 2024. 3. 7.
Auditing을 고려한 테이블 설계 과정 목차개요Audit 정보Audit 칼럼 정하기프로젝트 ERD에 Audit 적용하기결론1. 개요테이블을 설계하면서 Auditing을 위한 칼럼들을 어떤식으로 각각의 테이블에 넣어야 할지를 고민했었다.그래서 이번 정리를 통해 Auditing 칼럼들을 어떻게 테이블에 녹여 낼지 기준을 잡아보려한다.2. Audit 정보우선 많은 Audit 칼럼이 존재하는데 살펴본 바로는 아래와 같은 많은 칼럼들이 존재한다.생성일 (Created Date) : 레코드가 생성된 일시.생성자 (Created By) : 레코드를 생성한 사용자 또는 시스템.수정일 (Last Modified Date) : 레코드가 마지막으로 수정된 일시.수정자 (Last Modified By) : 레코드를 마지막으로 수정한 사용자 또는 시스템.삭제 여부 .. 2024. 3. 2.
Scale out시 세션불일치 방지를 위한 Redis 선정과정 목차 개요 Redis 2-1. 특징 Memcached 3-1. 특징 그래서 차이점이 뭐야? 결론 1. 개요 실제 업무 상황에서 발생 할 수 있는 상황을 만들고자, Scale out에서 세션불일치 방지하려고 한다. 그 과정에서 Redis와 Memcached 같이 메모리 기반 저장소를 비교하고 프로젝트 상황에 맞는 저장소를 선정해보자. 2. Redis Redis(Re mote Di ctionary Se rver)는 Key-Value 쌍의 해시 맵과 같은 구조를 가진 비관계형 DBMS이다. 오픈 소스 기반으로 인메모리 데이터 구조 저장소로 메모리에 데이터를 저장한다. 따라서, 별도의 쿼리문이 필요 하지 않고, 인메모리에 저장되기 때문에 상당히 빠른 속도로 처리 할 수 있다. 2-1. 특징 성능 메모리에 저장되.. 2024. 2. 23.
레이어드 아키텍처(Layerd Architecture)와 테스트 목차개요Presentation Layer(User Interface)Business Layer(Business Logic)Persstence Layer(Data Access)레이어 아키텍처의 핵심요소1. 개요스프링 MVC 기반에서 가장 많이 사용되는 아키텍처이다. 아래 그림을 살펴 보자.레이어 별로 나누어서 개발을 하기위해 나누었으나 언급하는 곳마다 용어가 조금씩 다르기도 하고 어떤 관점에서 보는 것에 따라 달라지기도 한다.왜 레이어를 나누는가를 중점으로 볼때 나의 답은 아래와 같다.관심사의 분리 때문에 레이어를 분리하는 것이라 생각한다. 관심사를 나누어서 각 계층마다 책임을 나누고 유지보수 용이하도록 하는 것이다.2. Presentation Layer(User Interface)Presentation .. 2024. 2. 23.