전체 글 194

Akka Actor 개발팁

Akka Actor 개발팁 1. Actor은 하나의 기능만을 담당을 한다.객체지향의 SRP기능을 많아 질수록 복잡성이 높아진다. 응집도가 낮아진다. 결합도 높아진다. 2. Actor Message는 Actor Class 내부에 정의한다.public class DemoMessagesActor extends AbstractLoggingActor { static public class Greeting { private final String from; public Greeting(String from) { this.from = from; } public String getGreeter() { return from; } } @Override public Receive createReceive() { return..

Programing/Akka 2018.09.18

Apache Cassandra

Apache Cassandra 특징High Availability에 최적화된 분산형 DatabaseConsistent Hasing을 이용한 Ring 구조https://ko.wikipedia.org/wiki/%EC%9D%BC%EA%B4%80%EB%90%9C_%ED%95%B4%EC%8B%B1https://www.joinc.co.kr/w/man/12/hash/consistenthttp://d2.naver.com/helloworld/1039Gossip Protocol마스터 없이 동작https://en.wikipedia.org/wiki/Gossip_protocolData Structure 최상위 논리적인 Data 저장소 KeyspaceTableRowKey-Value로 구성된 Column 데이터의 분산 Replic..

Database/Cassandra 2018.09.17

Dynamo DB

Dynamo DB비관계형 데이터베이스완전 관리형 다중 리턴 다중 마스터 데이터베이스10ms 미만의 지연시간을 제공 이점대규모 성능규모와 관계없이 10ms 미만의 응답성을ㅇ 제공무제한의 처리량, 스토리지Amazon DynamoDB AcceleratorIn-memory CacheKey-Value 및 Document 데이터 모델 지원데스크톱에서 로컬로 개발보조 인덱스스트림트리거완전관리형글로벌 테이블특정 시점 복구 기능온디맨드 백업 및 복원 기능적응형 용량Auto ScalingTTL (Time to Live)사용 사례서비리스 웹 애플리케이션마이크로서비스 데이터 스토어모바일 백엔드광고 기술게임IOT핵심 구성 요소테이블, 항목 및 속성테이블데이터의 집합People Tables, Cars Table항목각 테이블에는 ..

인프라/AWS 2018.09.13

Guava Cache

Guava Cache데이터를 계속 읽을 필요가 없을 경우 캐쉬를 이용하여 처리를 할수 있다. 일반적으로 엔티티를 캐쉬도 하지만 설정(Config) 같이 자주 바뀌지 않는 값을 Cache를 이용하여 활용할수 있다.Guava Cache는 Local에서 작동되는 캐쉬이기 때문에 클러스터에서는 공유가 되지 않는다. 이경우에는 Memcached, Redis 를 활용한다. ExampleLoadingCache graphs = CacheBuilder.newBuilder() .maximumSize(1000) .expireAfterWrite(10, TimeUnit.MINUTES) .removalListener(MY_LISTENER) .build( new CacheLoader() { public Graph load(Key ..

Programing/Java 2018.09.12

Akka Distributed Publish Subscribe in Cluster #3. Configuration

Akka Distributed Publish Subscribe in Cluster #3. ConfigurationAkka PubSub에 대한 Configuration에 대해 알아보자.application.conf# Settings for the DistributedPubSub extensionakka.cluster.pub-sub { # Actor name of the mediator actor, /system/distributedPubSubMediator name = distributedPubSubMediator # Start the mediator on members tagged with this role. # All members are used if undefined or empty. role = ..

Programing/Akka 2018.09.11

Akka Distributed Publish Subscribe in Cluster #2.Send

Akka Distributed Publish Subscribe in Cluster #2.SendSendpoint-point modecluster 내부 node에 actor가 어디에 있는지를 모르는 경우에 사용을 한다.특정 일을 하고 있는 Actor를 찾는 경우채팅방에서 상대방의 Actor를 찾는 경우메세지가는 path가 매칭되는 하나의 actor에게만 전달이 된다.여러개인 경우에는 RoutingLogic 에 따라 하나의 actor에만 메시지가 전달이 된다.DistributedPubSubMediator.Put 를 이용하여 ActorRef를 Path로 registry 에 등록이 된다.DistributedPubSubMediator.Send를 이용하여 해당하는 Path로 메시지를 전달을 한다.종료될때 자동으로 ..

Programing/Akka 2018.09.11

Spring @Transactional Propagation

Spring @Transactional PropagationSpring Framework에서 제공하는 트랙잭션의 기능인 전파에 대해 알아보자. 결제, 예약 등과 같이 트랙잭션을 세밀하게 컨트롤을 해야하는 서비스 반드시 알아야되는 내용 중이 하나이다. 어노테이션의 해당하는 옵션은 propagation 필드이다.REQUIREDTransaction이 없는 경우에는 새롭게 생성을 한다.Method 2가 실행이 되는 경우에는 Transaction이 생성된 것을 사용한다.REQUIRES_NEW새로운 Transaction을 생성을 한다.Tip (2018/11/27 추가)Transcation 1이 길어지는 경우가 발생이 될수도 있다 이럴 경우에는 Long Transaction이기 때문에 DB가 Restart가 될수가 ..

목적에 맞는 데이터베이스 선택하기

목적에 맞는 데이터베이스 선택하기서비스를 개발을 할때 그 서비스의 성격, 특징에 맞게 데이터베이스 선택 또한 중요한 요소중의 하나이다.Data SizeRead (Latency)WriteUpdate위의 특징에 따라 선택할수 있는 데이터베이스를 정리를 해본다. 하나의 데이터베이스만 사용하는 것이 아니라 비즈니스, 데이터의 성격 등의 따라 데이터를 여러개를 둬서 활용한다. 데이터 양이 적고 읽기, 쓰기가 중요한 경우, 업데이트가 많이 일어나는 경우 (Data size ~ X GB, Read < 10ms, write < 10ms)빠른 읽기, 쓰기를 위해 Memory를 사용하는 Database를 선택한다. 보통 Cache에 활용된다.update가 자주 일어나는 경우 (real-time)에 활용된다.RedisMem..

Database 2018.09.09