진짜 개발자
본문 바로가기

전체 글 (총 582개)

Redis - 영속화(Persistence) 이번 포스팅에서는 Redis의 영속성(Persistency) 에 대해서 알아보도록 하겠습니다 1. RDB 첫번째 영속성을 얻기 위한 방법은 RDB입니다. 관계형 DB가 아니라, Redis Database의 줄임말입니다. 이 방법은 지정된 간격으로, 데이터의 스냅샷을 찍어 저장합니다. 즉, 현재 메모리에 저장된 데이터 상태들을 특정 시점에 저장하는 방법을 말합니다. 장점 RDB는 매우 압축된(작은 크기의) 특정 시간에 대한 메모리 상태(데이터)를 나타냅니다. Ex) 예를들어, 시간마다, 또는 매일 스냅샷을 통해 Redis에 장애가 발생한 경우 원하는 특정 지점의 데이터를 복구할 수 있습니다. 별도의 저장소로 보낼 수 있는 단일 압축 파일이기 때문에 재해 복구에 좋습니다. 단점 특정 시간마다 현재 메모리의 ..
Database - 샤딩과 파티셔닝 이번 포스팅에서는 파티셔닝과 샤딩의 차이에 대해 알아보도록 하겠습니다. 대규모 트래픽, 데이터를 다루는 곳에서는 확장성을 위해서 샤딩, 파티셔닝을 필수적으로 고려하게 됩니다. 파티셔닝에서는 수평(테이블의 Row를 특정 컬럼의 값을 기준으로 나누는 것)파티셔닝과 수직(컬럼을 여러 테이블로 나누는것)파티셔닝이 존재합니다. 필자는 수평파티셔닝 == 샤딩으로 잘못 인지를 하고있었습니다 .. 샤딩, 파티셔닝(수평) 차이 위 글에 나온것을 보면 샤딩과 파티셔닝 모두, 큰 데이터를 여러 서브셋으로 나누어 저장하는 기술을 말합니다. 하지만, 샤딩의 경우에는 각 서브셋을 여러 인스턴스에 저장하는 반면, 파티셔닝은 하나의 인스턴스의 여러테이블에 나누어 저장하는 것을 말합니다. 샤딩 샤딩은 앞서 말씀드렸듯이 하나의 큰 데이..
Kafka - Kafka란? (Kafka의 구조와, 주요개념) Apache Kafka Apache Kafka의 각 구성요소와 구성요소들의 주요 개념을 알아보도록 하겠습니다. 어떤 기술의 특성을 이해하고, 구성요소를 이해하는것은, 해당 기술을 이용해 특정 기능을 구현할때 매우 중요한 요소입니다. 불필요한 처리를 줄일 수 있고, 꼭 필요한 처리를 할지를 판단할 수 있는 밑거름이 되기 때문입니다. https://kafka.apache.org/documentation이 글은 Kafka 공식 홈페이지의 문서를 보며 정리한 글입니다. 1. Kafka란?Kafka는 Pub-Sub 모델의 메시지 큐입니다. 분산환경에 특화되어있는 특징을 가지고 있습니다. 이 글의 3.Kafka의 주요개념 에서 Kafka의 개념들과 이들의 특징을 더 자세히 알아보도록 하겠습니다. 2. 구성요소2.1..
ApplicationKnowhow/Server - 게시판 조회수 기능 성능 최적화 이번 포스팅에서는, 일반적인 조회수 기능의 성능 향상을 고려해보는 시간을 갖도록 하겠습니다. 1. 조회수 기능 살펴보기 조회수는 어떤 글을 몇명의 사용자가 보았는지를 알려주는 것입니다. 방문자 수 또한 크게 보면 조회수와 같습니다. 언뜻보면, 조회수는 상당히 간단한 기능이기 때문에, 최적화가 필요할까? 성능향상이 필요할까? 싶기도합니다. 하지만 아주 작은 리소스를 소모하는 부분들일지라도, 잘못된 설계를 했고, 수많은 사용자들이 이용하다보면 매우 큰 문제로 이어지기도 합니다. 또한, 이렇게 작은 부분부터 하나 둘씩 성능 고려를 해두면, 나중에 정말 비즈니스상 크리티컬한 성능 문제가 야기 되었을때, 많은 도움이 되지 않을까요? 1.1 조회수 성능 최적화가 필요한 이유 및 필요한 부분 데이터베이스 잠금 첫번째..
Spring MVC - Spring MVC 동기화와 JPA 잠금기법 Spring MVC 동시성 테스트 이번 포스팅에서는 동기화 관련 문제를 다루어 보도록 하겠습니다. 우선, 동기화에 대해 알아보고, Spring MVC를 이용시 발생할 수 있는 문제점을 보도록 하겠습니다. 마지막으로, 이를 해결하는 방법도 알아보도록 하겠습니다. 만약! 현재 Spring MVC 프로젝트를 진행중이지만, Thread를 별도로 생성해서 공유 자원에 접근하는 것이 아닌데 왜, 동기화 문제가 발생하는지를 궁금해하신다면, Servlet에 대해 다시 공부를 해보셔야 합니다. 1. 동기화여러 스레드간 공유되는 자원은 항상 동기화 관련 처리를 해주어야합니다. 자바에서는 객체의 멤버변수가 동기화 대상 데이터가 될 수 있습니다. JVM에서, 객체는 Heap 영역에 할당되고, 이 Heap 영역을 Thread들..