전체 글 194

Dockerfile

DockerfileDockerfile은 이미지 설정 파일 DockerfileFROM ubuntu:14.04MAINTAINER Foo Bar RUN apt-get updateRUN apt-get install -y nginxRUN echo "\ndaemon off;" >> /etc/nginx/nginx.confRUN chown -R www-data:www-data /var/lib/nginx VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"] WORKDIR /etc/nginx CMD ["nginx"] EXPOSE 80EXPOSE 443FROM Base Image : MAINTAINER메인테이너 정보RUN쉘 스크립트 혹은 명령어를 실행한다명령어를 줄수..

인프라/docker 2018.10.03

Kafka Partition 갯수와 Consumer 갯수에 따른 차이

Kafka Partition 갯수와 Consumer 갯수에 따른 차이- https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html4개 Partition, 1개 ConsumerConsumer 1는 모든 Partition에서 데이터를 받는다. 4개 Partition, 2개 ConsumerConsumer 1, Consumer 2가 각각의 파티션을 나누여서 받게 된다. 4개 Partition, 4개 Consumer1개의 파티션이 하나의 컨슈머와 대응이 된다.최적의 소모 방식4개 Partition, 5개 ConsumerIdle 상태의 Consumer가 하나가 존재를 하게 된다.

Observer Pattern

Observer Patternhttps://en.wikipedia.org/wiki/Observer_pattern 여러개의 observer를 가지고 있는 subject가 있고 상태가 변경이 되었을때 (state change) 자동으로 observer에게 notify를 한다.객체가 1 to N로 의존성을 가지고 있을때1개의 객체의 상태가 바꿨을때 의존하고 있는(dependent) 객체들이 자동으로 업데이트가 되어야 할때 Structure Examplesimport java.util.Observable;import java.util.Scanner; class EventSource extends Observable implements Runnable { public void run() { while (true)..

Programing 2018.09.30

Akka with Spring

Akka with SpringActor를 만들때 필요한 의존성을 대표적인 Dependency Injection 프레임워크인 Spring를 이용하여 사용하는 방법에 대해 알아보자Spring Bean Cycle과 다르게 Akka Actor의 Life Cycle을 가지고 있는다. Gradlecompile "org.springframework:spring-context:${spring.version}"compile "com.typesafe.akka:akka-actor_2.11:${akka.version}" Define Actor@Component@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)public class GreetingActor extends UntypedActor..

Programing/Akka 2018.09.29

Spring Bean Life Cycle

Spring Bean Life Cycle Annotation을 이용하는 방법 @PostConstruct, @PreDestroy 를 이용하면 Bean이 생성될때 Bean 제거 될때의 Life Cycle에 코드를 실행을 할수가 있다. @Service public class MyService { @PostConstruct public void init(){ System.out.println("MyService init method called"); } @PreDestroy public void destory(){ System.out.println("MyService destroy method called"); } } InitializingBean, DisposableBean Interface를 이용하는 방법 ..

Kafka Auto Commit

Kafka Auto CommitKafka OffsetKafka Partition 별로 메시지의 연속된 id (sequence id)Consumer에서도 현재까지 읽은 메시지의 offset을 가지고 있다 (_consumer_offsets)Consumer가 Kafka에 현재까지 읽은 메시지의 offset을 알려주는 것이 commit 이라고 한다.Auto Commitenable.auto.commit : true auto.commit.interval.ms : 5000 특정 주기마다 자동으로 commit을 하는 설정enable true이고 interval.ms가 5초인경우에는 5초마다 consumer에서 자동으로 commit을 하게 된다.commit을 직접관리하는 경우에는 enable을 false로 설정을 하고 ..

외부 Dependency는 내부 로직까지 전파가 되어서는 안된다.

외부 Dependency는 내부 로직까지 전파가 되어서는 안된다.Dto(Data Transfer Object) 는 내부 객체로 변환해서 처리를 한다.Dto는 이기종간의 시스템에서 통신을 하기 위한 객체이다.Dto는 내부 도메인 로직까지 포함이 되어있으면 결합도 높은 코드가 되어버린다.외부 시스템이 바뀌면 내부 로직이 바뀌는게 많이 지기 때문에 Dto로 받은 객체는 내부 객체로 변환해서 처리를 한다.