스칼라 공부하기 좋은 사이트 스칼라 학교

http://twitter.github.io/scala_school/ko/


저작자 표시 비영리 변경 금지

'Life & Culture > 일상다반사' 카테고리의 다른 글

스칼라 공부에 좋은 자료  (0) 2015/05/30
사랑가  (0) 2015/03/04
Beyond the Universe  (2) 2015/01/31
기름 유출 피해를 경고하는 광고  (0) 2014/08/11
운전중 휴대폰 사용을 경고하는 광고  (0) 2014/06/15
아이유 50cm  (0) 2014/06/07

알리바바 이야기

Life & Culture/생각지도 2015/05/25 01:08 posted by k16wire
작년에 방영된 다큐인데 참 배울점이 많네요.


https://www.youtube.com/watch?v=6qJ31mAbg6Y&feature=share





저작자 표시 비영리 변경 금지

'Life & Culture > 생각지도' 카테고리의 다른 글

알리바바 이야기  (0) 2015/05/25
하나 이상의 언어를 공부하자  (0) 2015/04/02
무제  (0) 2015/02/26
가장 어려운 문제와 가장 쉬운문제  (0) 2015/02/03
DevOps 엔지니어의 행복한 하루  (0) 2015/01/21
유리감옥  (0) 2014/12/31

Play로 개발한 웹앱을 Docker 컨테이너로 실행하는 방법입니다.


Docker로 실행할 샘플 어플리케이션 helloplay를 만들어서 실행되는지 확인합니다.

Activator new helloplay

5번이나 6번 선택

cd helloplay

activator run


Dockerfile을 프로젝트 루트에 추가합니다. 

Dockerfile 내용은 아래 내용을 참고해서 ACTIVATOR_VERSION, APP-NAME,VERSION 을 수정합니다.


FROM centos:7


MAINTAINER Sangcheol Hwang <이메일>


ENV JAVA_VERSION 1.8.0

ENV ACTIVATOR_VERSION 1.3.2

ENV APP_NAME helloplay

ENV VERSION 1.0-SNAPSHOT


RUN yum update -y 

RUN yum install -y java-"${JAVA_VERSION}"-openjdk.x86_64 && \

cd /opt && \

yum install -y unzip && \

curl -O http://downloads.typesafe.com/typesafe-activator/"${ACTIVATOR_VERSION}"/typesafe-activator-"${ACTIVATOR_VERSION}"-minimal.zip && \

unzip typesafe-activator-"${ACTIVATOR_VERSION}"-minimal.zip && \

rm -f /opt/typesafe-activator-"${ACTIVATOR_VERSION}"-minimal.zip && \

mv /opt/activator-"${ACTIVATOR_VERSION}"-minimal /opt/activator && \

chmod a+x /opt/activator/activator && \

yum clean all


ENV PATH $PATH:/opt/activator


RUN mkdir /app

ADD ./target/universal/${APP_NAME}-${VERSION}.zip /app/

RUN unzip /app/${APP_NAME}-${VERSION}.zip -d /app/ 

WORKDIR /app/${APP_NAME}-${VERSION}/bin


EXPOSE 9000


CMD ["./helloplay"]


ubuntu로 만든다면 dockerfile/java:oracle-java8을 이용합니다.

FROM dockerfile/java:oracle-java8


ENV ACTIVATOR_VERSION 1.3.2

ENV APP_NAME helloplay

ENV VERSION 1.0-SNAPSHOT


MAINTAINER Sangcheol Hwang <sc.hwang@sk.com>


RUN cd /opt && \

curl -O http://downloads.typesafe.com/typesafe-activator/"${ACTIVATOR_VERSION}"/typesafe-activator-"${ACTIVATOR_VERSION}"-minimal.zip && \

unzip typesafe-activator-"${ACTIVATOR_VERSION}"-minimal.zip && \

rm -f /opt/typesafe-activator-"${ACTIVATOR_VERSION}"-minimal.zip && \

mv /opt/activator-"${ACTIVATOR_VERSION}"-minimal /opt/activator && \

chmod a+x /opt/activator/activator


ENV PATH $PATH:/opt/activator


RUN mkdir /app

ADD ./target/universal/${APP_NAME}-${VERSION}.zip /app/

RUN unzip /app/${APP_NAME}-${VERSION}.zip -d /app/

WORKDIR /app/${APP_NAME}-${VERSION}/bin


EXPOSE 9000


CMD ["./helloplay"]



Play 웹앱을 패키징 합니다.

activator dist


Docker 이미지를 만들고 컨테이너를 실행합니다.

docker build -t helloplay .

docker run --name helloplay -d -P helloplay


저작자 표시 비영리 변경 금지

윈도우 서버에서 도커

Work & Study/TechTalk 2015/04/20 09:35 posted by k16wire



윈도우에서 가상환경이 아닌 윈도우 서버에서 Docker를 실행하겠다는 발표가 나왔습니다. Docker는 리눅스 커널을 공유하는 리눅스 컨테이너 기술입니다. 리눅스가 아닌 윈도우에서 Docker를 실행한다는게 잘 이해가 가지 않네요.


참고자료

[1] http://azure.microsoft.com/blog/2014/10/15/new-windows-server-containers-and-azure-support-for-docker/

[2] http://www.ciokorea.com/news/24784


저작자 표시 비영리 변경 금지

도커로 이것저것 테스트 하다보면 내가 만들지도 않은 이미지와 컨테이너가 마구 늘어납니다. 도커 명령어중에 이미지나 컨테이너를 한번에 지우는 명령은 없습니다. 하지만 파이프라인으로 쉽게 이를 구현할 수 있다.


현재 실행중이 아닌 컨테이너를 모두 지우고 싶다면

docker rm $(docker ps -aq)


이미지를 모두 지우고 싶다면

docker rmi $(docker images -q)


만약 컨테이너가 남아있다면 이미지는 지워지지 않습니다.



저작자 표시 비영리 변경 금지

Java만 주로 쓴게 십 몇년입니다. 이번해에는 꼭 Scala를 배우겠다는 생각에 매일 조금씩이라도 공부를 하고 있는데요.

Scala를 공부하다 보니 오히려 Java를 더 잘 이해하게 되는거 같습니다.

Java에서 당연하게 생각했던 개념들이 Scala에서는 다르게 동작하는것을 보면서 '아 이런 차이가 있구나. 그런데 왜 이렇게 구현해놨을까.' 하는 생각을 합니다.

역시 배움은 당연하게 생각할때가 아니라 차이점을 깨달을때 오는것 같습니다.



저작자 표시 비영리 변경 금지

'Life & Culture > 생각지도' 카테고리의 다른 글

알리바바 이야기  (0) 2015/05/25
하나 이상의 언어를 공부하자  (0) 2015/04/02
무제  (0) 2015/02/26
가장 어려운 문제와 가장 쉬운문제  (0) 2015/02/03
DevOps 엔지니어의 행복한 하루  (0) 2015/01/21
유리감옥  (0) 2014/12/31

사이드킥 모델(Sidekick model)

Work & Study/TechTalk 2015/03/31 15:21 posted by k16wire

CoreOS에서 fleet으로 Docker 컨테이너를 실행하면 클러스터에 들어있는 호스트 리소스를 스케쥴링하여 최적 호스트에 컨테이너를 실행해줍니다. 그런데 이렇게 실행된 서비스에 대한 접근 정보(IP와 포트)를 알수 없다는 이슈가 생깁니다. 


이를 위한 대표적인 해결책이 사이드킥 모델(Sidekick model) 입니다. 이 모델은 서비스가 실행되면 자동으로 동반 실행되는 서비스를 하나 더 등록합니다. 이 동반 서비스는 해당 서비스가 실행되고 나면 서비스의 IP와 포트 정보를 etcd에 저장합니다. 서비스가 종료되면 etcd에서 해당 서비스의 키를 삭제합니다.


다음은 nginx 서비스를 fleet으로 실행했을때 ip와 port 정보를 구하는 사이드킥 서비스 예입니다.

[Unit]
Description=Announce nginx1.service
# Binds this unit and nginx1 together. When nginx1 is stopped, this unit will be stopped too.
BindsTo=nginx1.service

[Service]
ExecStart=/bin/sh -c "while true; do etcdctl set /services/website/nginx1 '{ \"host\": \"%H\", \"port\": 8080,
 \"version\": \"52c7248a14\" }' --ttl 60;sleep 45;done" ExecStop=/usr/bin/etcdctl delete /services/website/nginx1 [X-Fleet] # This unit will always be colocated with nginx1.service MachineOf=nginx1.service


참고자료



저작자 표시 비영리 변경 금지

'Work & Study > TechTalk' 카테고리의 다른 글

윈도우 서버에서 도커  (0) 2015/04/20
도커 이미지와 컨테이너 한번에 지우기  (0) 2015/04/09
사이드킥 모델(Sidekick model)  (0) 2015/03/31
VirtualBox 네트워크 이해  (0) 2015/03/29
Docker 리모트 API로 포트 바인딩  (0) 2015/03/17
Docke 발표자료  (0) 2015/03/14

VirtualBox 네트워크 이해

Work & Study/TechTalk 2015/03/29 03:22 posted by k16wire

네트워크 구성을 테스트하다보니 버추얼박스를 많이 사용합니다. 버추얼박스 네트워크에 대한 이해가 필요해서 검색하다 찾았습니다.


출처: http://solatech.tistory.com/277

버추얼박스 네트워크 이해 및 완벽 가이드.pdf




저작자 표시 비영리 변경 금지

'Work & Study > TechTalk' 카테고리의 다른 글

도커 이미지와 컨테이너 한번에 지우기  (0) 2015/04/09
사이드킥 모델(Sidekick model)  (0) 2015/03/31
VirtualBox 네트워크 이해  (0) 2015/03/29
Docker 리모트 API로 포트 바인딩  (0) 2015/03/17
Docke 발표자료  (0) 2015/03/14
Panamax 설치  (0) 2015/03/03