전체 글 194

DAG (Directed acyclic graph)

DAG (Directed acyclic graph) Graph : Edge와 Node를 가진 구조Directed Graph : Graph에서 방향(direction)을 가진 구조Acyclic Graph : 순환 구조가 아닌 GraphDirected Acyclic Graph : 순환 구조가 아닌 방향(direction)을 가진 구조간단하게 생각을 하면 순환 구조가 아닌 데이터의 워크 플로우 Spark에서의 DAG SchedulerRDD operation을 통해 DAG가 정의각 되고 TaskScheduler(Yarn 등)을 이용하여 데이터를 처리 한다 Referecnehttps://en.wikipedia.org/wiki/Directed_acyclic_graph http://simpledbs.blogspot...

Programing 2018.08.06

Akka Dispatcher를 이용한 성능 튜닝

Akka Dispatcher를 이용한 성능 튜닝Akka를 이용하여 시스템을 개발을 했지만, 생각보다 속도가 나지 않은 경우에는 성능 튜닝이 필요하다. 대부분의 성능이 I/O (Network, File)로 인해 성능이 느려지는 경우가 있다. Akka Dispatcher를 설정을 통해 성능 튜닝을 할 수 있다. Default Dispatcheractor-system이 가지고 있는 기본 Dispatcher대부분 케이스에 성능이 잘나오는 fork-join-executor를 사용한다. Looking Up Dispatcherfinal ExecutionContext ex = system.dispatchers().lookup("my-dispatcher");Setting dispatcher for actormy-disp..

Programing/Akka 2018.08.05

전략 패턴 (Strategy Pattern)

전략 패턴 (Strategy Pattern)특정한 계열의 알고리즘들을 정의하고각 알고리즘을 캡슐화하며이 알고리즘들을 해당 계열 안에서 상호 교체가 가능하게 만든다. UML Class Diagram 활용상품 구매시 포인트를 적립해주는 시스템이라고 할때 상품의 카테고리마다 포인터의 적립 계산 규칙이 다르게 된다. 포인터를 계산을 하는 부분을 전략 패턴을 적용해서 활용할수 있다.상황에 따라 비즈니스로직이 변하는 부분, 외부 설정 (Config) 등에 따라 비즈니스 로직이 달라지는 부분Interface를 이용하는 방법, java 8 이상에서는 람다 함수(Functional Inteface)를 이용할수도 있다. Referencehttps://ko.wikipedia.org/wiki/%EC%A0%84%EB%9E%B5..

Programing/Java 2018.08.04

Rule Engine

Rule Engine언제 rule engine을 사용해야 되는 것인가?해결해야 할 문제가 전통적인 코드개발로는 반복적인 코드 반복이 나올때비지니스 요구 사항을 구현하기가 쉽지만, 그것을 해결하기 위한 유연한 방법을 찾을때비지니스 요구 사항을 구현하기가 어려울때로직이 자주 변경으로 인해 서비스 배포가 빈번하게 일어날때기술적이지 않은 업무영역 전문가(비즈니스 분석가)가 시스템의 룰을 읽을 수 있어야 할때용어Facts : 데이터Condition : 조건Action : 조건이 맞으면 해당하는 Action Rule Engine 종류 Rule 엔진을 직접 구현을 해서 사용할수도 있지만 Open Source를 이용하여 구현을 할수도 있다. Rule Engine은 아래와 같은 종류의 Open Source가 있다.Dro..

Programing/Java 2018.08.04

Amazon S3

Amazon S3Amazon S3은 99.999999999%의 내구성을 제공하고 있는 Object Storage이다. Amazone S3를 직접 데이터를 추출을 할 수 있는 Amazon S3 Select 기능도 제공을 하고 있다. S3 서비스는 리전 단위의 서비스이고, 데이터 저장크기도 무제한이다. AWS 내에서 가장 저렴한 서비스 중에 하나이다.활용CDN와 연동AWS에서 제공하는 CDN 서비스인 Cloudfornt와 연동을 할수 있다.클릭 데이터/로그 데이터 등의 저장클릭/로그 데이터 등의 여러가지 데이터를 저장을 하는 형태로 활용이 될수 있다.S3 Select / Amazon Redshift / Amazon Athena 등을 이용하여 데이터를 추출을 할수 있다.AWS EMR, Spark 와 함께 데이..

인프라/AWS 2018.08.02

Adapter Pattern

Adapter PatternInterface를 이용하여 라이브러리 API를 재정하는 패턴Interface만 동일하면 기존 라이브러리에서 새로운 라이브러리로 변경이 쉬워진다. UML Diagram Exampleinterface ClickInfoClient{ClickInfo get(Long clickId);} class ClickInfoHiveClient implements ClickInfoClient{ClickInfo get(Long clickId){return HiveRepository.findById(clickId)}} ClickInfoClient clickInfoClient = new ClickInfoHiveClient();System.out.println(clickInfoClinet.get(1));..

Programing/Java 2018.08.01

Akka Stream Error Handling

Akka Stream Error HandlingAkka Stream의 Operator에서 에러가 발생되는 경우에는 기본 설정인 Stream의 stop으로 되어있고, 기본적으로 에러 관련 메시지는 나타나지 않는다.실시간 데이터 처리 등에서는 하나의 데이터가 오류가 난다고 전체의 데이터를 받지 못하면 안되기 때문에 Error Handling에 관련된 설정이 불가피하다. Logging ErrorSource.from(Arrays.asList(-1, 0, 1)) .map(x -> 1 / x) //throwing ArithmeticException: / by zero .log("error logging") .runWith(Sink.ignore(), mat);`log()` 를 이용하여 error log를 생성을 할수..

Programing/Akka 2018.08.01

Kafka Producer Partition Leader / Ack, Timeout

Kafka Producer Partition Leader / Ack, Timeout Partition Leader여러대의 클러스터로 묶인 서버중 한대는 Partition Leader로 할당이 되고, 다른 서버는 Follower로 할당이 된다. Leader은 Read와 Write를 담당을 하게 되고 Follower은 Leader의 데이터를 복제(Replicate)를 한다. Leader 서버가 죽게 되면 Follower 서버중의 하나가 자동으로 Leader가 된다. `ack` configuration for producerKafka에 Message에 대해 Produce를 할때 서버로부터 ack를 어떻게 받는지에 대한 설정이다. ack를 받지 못하고 일정 시간(timeout)이 지나가면 KafkaProduce..

Python Fabric

Python Fabric원격 SSH Remote를 이용한 Shell Command 실행기Deploy, 인프라 Provisioning 등에서 사용을 할 수 있다.SSH Key로 이용하여 원격 컨트롤 할수 있다 SSH Key 생성 가이드 : https://opentutorials.org/module/432/3742적용 방법 : https://stackoverflow.com/questions/5069895/connecting-to-ec2-using-keypair-pem-file-via-fabricenv : https://stackoverflow.com/questions/5327465/using-an-ssh-keyfile-with-fabric#5327496https://gist.github.com/yuvadm/..

Programing/Python 2018.07.29

Apache HttpClient Example

Apache Http Client ExampleApache Http Client Examplehttps://hc.apache.org/Sample Code : https://hc.apache.org/httpcomponents-client-ga/examples.htmlSpring RestTemplate 보다 설정이나 사용이 까다롭다. 설정이 많이 필요한 경우를 제외하고는 Spring RestTemplate를 활용하자.Sample Codepublic class ClientWithResponseHandler { public final static void main(String[] args) throws Exception { CloseableHttpClient httpclient = HttpClients.crea..

Programing/Java 2018.07.29