전체보기(194)
-
EHCache
1. EHCache란 EHCache란 Java의 대표적인 캐시 엔진 중의 하나입니다. 특징 경량의 빠른 캐시 엔진 메모리, 디스크 저장 지원, 멀티 CPU의 동시 접근에 튜닝 동기, 비동기 복사, 피어 자동 발견 사용 이유 Java 메소드에 캐싱을 적용함으로써 캐시에 보관된 정보로 메소드의 실행 횟수를 줄여줍니다. 대상 메소드가 실행될 때마다 추상화가 해당 메소드가 같은 인자로 이미 실행되었는지 확인하는 캐싱 동작을 적용합니다. 해당 데이터가 존재한다면 실제 메소드를 실행하지 않고 결과를 반환하고 존재한다면 메소드를 실행하고 그 결과를 캐싱한 후, 사용자에게 반환해서 다음 번 호출 시에 사용할 수 있게 합니다. 2. EHCache 사용 방법 Maven 의존성 추가 net.sf.ehcache ehcache..
2020.05.13 -
Sharding
1. Sharding이란 Sharding이란 단일의 데이터를 다수의 데이터베이스로 분산시키는 것을 말합니다. 이렇게 데이터를 분산시킴으로써 인덱스의 크기를 줄이고 작업 동시성을 늘릴 수 있습니다. Sharding은 Application Level에서도 가능하지만 Database Level에서도 가능합니다. 데이터베이스를 Sharding하게 되면 기존에 하나로 구성될 스키마를 다수의 복제본으로 구성하고 각각의 Shard에 어떤 데이터가 저장될지를 Shard Key를 기준으로 분리합니다. 2. Sharding 방법 Algorithm Sharding 데이터베이스 ID를 단순하게 나누어 샤딩하는 방식입니다. Sharding Key는 hash(key) % NUM_DB 같은 방식입니다. 장점 같은 값을 가지는 ke..
2020.05.08 -
Kafka
1. Apache Kafka란 Apache Kafka란 대용량의 실시간 로그 처리에 특화되어 설계된 메시징 시스템입니다. Kafka는 Pub/Sub 모델을 기반으로 동작하며 크게 producer, consumer, broker로 구성됩니다. 그림으로 표현하면 아래와 같이 나타납니다. Producer: 데이터를 발생시키고 Kafka Cluster에 적재하는 프로세스 Kafka Cluster: 카프카 서버로 이루어진 클러스터 Broker: 카프카 서버 Zookeeper: 분산 코디네이션 시스템으로, Kafka Broker를 하나의 Cluser로 코디네이팅하는 역할을 하며, Cluster의 Leader를 발탁하는 방식을 제공 Topic: Kafka Cluster에 데이터를 관리할 때 그 기준이 되는 개념. T..
2020.05.08 -
Message Queue
1. Message Queue Message Queue란 비동기 메시지를 사용하는 다른 응용프로그램 사이의 데이터 송수신을 구현한 시스템을 의미합니다. 사용자가 많아져서 웹 요청이 증가하면 요청에 대한 응답을 기다리다가 대기 시간이 지연되어 서비스를 정상적으로 제공하지 못하게 됩니다. 이런 상황을 해결하기 위해 기존에 분산되어 있던 데이터 처리를 한 곳에 집중하면서 Message Broker를 두어서 필요한 프로그램에 작업을 분산시키는 것이 Message Queue의 목적입니다. 이러한 Message Queue는 별도의 공정 작업을 연기할 수 있는 유연성을 제공하여 Service Oriented Architecture의 개발에 도움을 줄 수 있습니다. 2. Message Queue의 장점 비동기: Que..
2020.05.08 -
Pub/Sub 모델
1. Pub/Sub 모델이란 Pub/Sub 모델은 Publish/Subscribe의 줄임말로 메시지 기반의 미들웨어 시스템을 말합니다. 일반적으로 메시지를 전송할 때는 publisher(sender)가 subscriber(receiver)에게 직접 메시지를 전송합니다. 하지만 Pub/Sub 모델에서는 publisher는 어떤 subscriber가 있는지 모르는 상태에서 메시지를 전송하고 subscriber는 publisher에 대한 정보 없이 자신의 Interest에 맞는 메시지만을 전송 받는 것을 말합니다. 위의 그림을 보면 sensor는 어떤 기기가 메시지를 받을지 모르는 상태에서 MQTT로 데이터를 전송합니다. 그리고 MQTT는 temperature가 필요한 기기들에게 메시지를 전송합니다. 이처럼 ..
2020.05.07 -
Transaction Template
1. @Transactional의 한계 public class TransactionInvoker { private A1Dao a1dao; private A2Dao a2dao; public void setA1dao(A1Dao dao){ this.a1dao = dao; } public void setA2dao(A2Dao dao){ this.a2dao = dao; } // 외부에서 호출하는 method public void invoke() throws Exception{ doInternalTransaction(); } @Transactional public void doInternalTransaction() throws Exception{ a1dao.insertA1(); a2dao.insertA2(); } }..
2020.05.07