연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - pycon kr 2015

77
/ (+ ) lablup.com , , .

Upload: jeongkyu-shin

Post on 12-Apr-2017

2.871 views

Category:

Software


7 download

TRANSCRIPT

Page 1: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

/ (+ )

lablup.com

,,.

Page 2: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

/ (+ )

lablup.com

,,.

Page 3: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 4: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪▪ /

▪▪

/

▪ TNF/ Needlworks

▪ …

▪▪

▪ NBA ▪

80 Gbps

▪ …

http://www.lablup.com .

Page 5: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ 21 , 20 , 19

▪ ,

Page 6: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

21?

Page 7: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

.

.

Page 8: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

...

Page 9: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ / / /

▪ /

Page 10: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ Three keyboardists but…

Page 11: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ resource consolidation

Page 12: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 13: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

!

Python!…

Page 14: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python!▪

▪ :

▪ PEP-8

▪ :

Page 15: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python T_T▪

▪ PyPy / Pyston

▪ :

▪ C

▪ Cython

Page 16: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python /▪

▪ CS101

▪ “ ”

▪ indent…

▪ MATLAB numpy

Page 17: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

: ▪

▪ MATLAB : matplotlib, ipython notebook

▪ Ultra-complex figures

▪ /

Page 18: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

: ▪

▪ NBA

▪ configuration Python

▪ I/Ostdout asyncio

Page 19: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

It's time to go Python 3▪ Python 3

▪ Django, numpy/scipy, …

▪ Python 3.3

▪ PEP-393: strunicode codepoint

▪ narrow build UTF-16, wide build UTF-32

▪ UTF-8/16/32

▪ ASCII/Latin-1

▪ / ·

Page 20: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

It's time to go Python 3▪ Python 3.4

▪ PEP-3156: asyncio coroutine

▪ I/O

▪ GIL (global interpreter lock)

▪ pip virtualenv

Page 21: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ RabbitMQ, Kafka, Celery, ...

▪ (broker) ,

▪ redis …

Page 22: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

– ZeroMQ▪

▪ Request-Reply

▪ 1( : HTTP-like server/client)

▪ Push-Pull

▪ N-to-1 ( : logging system, task partitioning)

▪ Publish-Subscribe

▪ 1-to-N / N-to-M ( : broadcast)

Page 23: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

– ZeroMQ▪ :

▪ zero broker, zero latency, zero administration, ...

▪ : connection

▪ TCP / UDP / UNIX domain / local "in-process"

▪ zeromq transport header (ZMTP)

▪ payload (64+ )

▪ : persistent queue

▪ TCP reliability

Page 24: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

– LogStash

▪ LogStash

▪ input / filter / output

▪ ZeroMQ, S3

▪ ( !)

Django

User Kernel LogstashServer

DatabaseZeroMQ (push-pull)

+ JSONAWS S3

msgpack

Page 25: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

On-premise vs. Hosting vs. Cloud▪

▪ " " ...

▪ , ,

▪ AWS

▪ …

▪ 2012 R2 / / .

Page 26: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Docker containers▪ docker container

▪ VM deploy/destroy

▪ AWS EC2 Instance: ( )

▪ pooling

▪ Amazon ECS?

▪ container (run task) latency

▪ …

Page 27: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Docker containers▪

▪ : instance

▪ Microsoft docker

▪ Azure Windows

Page 28: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer library▪ HTML5

▪ HTML imports / Custom elements / Shadow DOM

▪ Web components

▪ “Polyfill”

▪ DOMelements

Page 29: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer library▪ ...

▪ !

▪ Bootstrap + theme?

▪ HTML5 !

Page 30: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 31: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 32: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

HTML imports!

Reusable web components!

Shadow DOM!

Polyfill!

Page 33: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer

▪ 7 ? ?

Page 34: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Electron: Cross-platform Polymer▪ : cross-platform webapp container

▪ Electron

▪ Github Node.js

▪ Node Chromium wrapping

▪ / /

▪ ATOM

▪ ?

▪ Apache Cordova

Page 35: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ Django UnitTest + Selenium

▪ Selenium webdriver:

Page 36: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ sphinx

▪ reST

▪ !

Page 37: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ sphinx

▪ reST

▪ !

Page 38: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

..

Page 39: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

, ,

+

,

Page 40: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ + .

▪ :

▪ –

▪ , , scaling, ...➞ ++

▪ :

▪ –

Page 41: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ .

▪ !

Page 42: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

CodeON!//codeonweb.com

!

Page 43: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 44: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 45: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 46: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 47: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Page 48: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

, …

Page 49: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 50: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

“ .”

Page 51: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ React / Flux / AngularJS / Polymer / ...

▪ +UI

▪ Polymer 0.9 API ....

▪ (?) Bootstrap …

▪ I/O 2015 Polymer 1.0...

Page 52: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer: it is too google to be true▪

▪ 0.5 - 0.8rc2 - 0.9 - …▪

▪ ( )

▪ Google I/O - 1.0 :

Page 53: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer: vulcanize▪ Vulcanize

▪ :

▪ IE – +

▪ CSS – +

▪ Crisper javascript map shadow DOMroot - +

Page 54: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer: vulcanize▪ Vulcanize

▪ :

▪ IE –

▪ CSS –

▪ Crisper javascript map shadow DOMroot -

Page 55: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer: polyfill

▪(html import

shadow DOM)polyfill

Page 56: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer + Django▪

▪ {{ … }}

▪ Polymer –

▪ Django –

▪ …

Page 57: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer + Django + Security▪ CORS (cross-origin resource scripting)

▪ Django – CORS header ( )

▪ Polymer – vulcanize Javascript CORS

▪ Crisper CORS Javascript

▪ -

▪ XSS

▪ Django - CSRF token

▪ Polymer – header iron-ajax

Page 58: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer▪ Production ready?!

▪ “Do not swim in sandocean. Swim in the ocean.”

▪ HTML5

▪ X-tag, react, polymer…

▪ ?

Page 59: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Polymer▪ Production ready?!

▪ “Do not swim in sandocean. Swim in the ocean.”

▪ HTML5

▪ X-tag, react, polymer…

▪ ?

Page 60: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Electron + web▪ ... !

▪(Noto )

▪ CSS: .

▪?

Page 61: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

: Django + RDS▪ UTF-8 Python ?

▪ (cf., str / bytes / io / codecs)

▪ MySQL SQLite

▪ MySQL

▪ ForeignKey Django

▪ MySQL + Django + Korean = EPIC FAIL

▪ ( ) Postgres ...

▪ postgres ( / ) .

Page 62: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python 3.4 – asyncio / coroutine

▪ .

▪ yieldfrom ...

▪ AST staticanalysis coroutineyieldfrom

▪ , 100% static analysis

▪ duck typing + dynamic method generation+ method proxy pattern ...

▪ Python 3.5 await/async!

Page 63: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python 3.4 – asyncio loop

▪ loop.close()..

import asyncioimport asyncio_redisloop = asyncio.get_event_loop()conn = loop.run_until_complete(

asyncio_redis.Connection.create('localhost', 6379))conn.close()loop.close()

Task was destroyed but it is pending!task: <Task pending coro=<_reader_coroutine() running at /.../lib/python3.4/site-packages/asyncio_redis/protocol.py:919> wait_for=<Future pending cb=[Task._wakeup()]>>

Page 64: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python 3.4 – asyncio loop

▪ asyncio graceful shutdown , 1. loop._run_once()

2. loop.run_until_complete(asyncio.sleep(0))

3. loop.run_until_complete(server.wait_closed())

▪ , wait_closed()coroutine

.

▪ event loop .

Page 65: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python 3.4 – asyncio loop #! /usr/bin/env python3import asyncioloop = asyncio.get_event_loop()@asyncio.coroutinedef my_timer():

i = 0while True:

yield from asyncio.sleep(1)print(i)i += 1

try:asyncio.async(my_timer(), loop=loop)loop.run_forever()

except KeyboardInterrupt:pass

finally:loop.close()

^CTask was destroyed but it is pending!task: <Task pending coro=<my_timer() done, defined at test.py:4> wait_for=<Future pending cb=[Task._wakeup()]>>

Page 66: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Python 3.4 – asyncio loop #! /usr/bin/env python3import asyncioloop = asyncio.get_event_loop()@asyncio.coroutinedef my_timer():

i = 0while True:

yield from asyncio.sleep(1)print(i)i += 1

try:asyncio.async(my_timer(), loop=loop)loop.run_forever()

except KeyboardInterrupt:for t in asyncio.Task.all_tasks():

t.cancel()try:

loop._run_once()except asyncio.CancelledError:

passfinally:

loop.close()

Page 67: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

asyncio_redis▪ Redis asyncio

▪ Heisenbug ! 🚨▪ SCAN key ...▪ while if ➞

▪ https://github.com/jonathanslenders/asyncio-redis/issues/65

▪ Connection pool API ▪ API call connection

stateful API ( : SELECT)▪ (aioredis)

Page 68: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

: – ZeroMQ

▪ Asynchronous ? block ??

▪ socket connect . ( ...)

▪ send/recv timeout

▪ aiozmq , blocking callasyncio.wait_for timeout

.

▪ pyzmq , socket.poll(msec)timeout .

Page 69: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

: – LogStash

▪ zmq input plugin s3 output pluginzmq recv_string

▪ 1: s3 output plugin “write”, PutObject

DeleteObject .

▪ 2: config , output plugin log level

· .

▪ 3: output plugininput plugin receive timeout .

Page 70: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

: Docker▪

▪ docker registry "latest"latest

▪ 2.0 2.0.1 tag

▪ docker 1.8 , CoreOS (rkt)

▪ /API

Page 71: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

:

▪ Jupyter / ipython▪ scalable

▪ Jupyter

▪ Unix

▪ :

▪ – Sorna

▪ .

Page 72: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

CodeON

Page 73: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ Container Resource Consolidation

▪ Kubernetes

▪ paxos raft agreement key-value

store .

▪ Ingen REPL (read-evaluate-print loop)

▪ stdout/stderrstreaming

▪ interactiveplot

▪ image,sound multimedia

Page 74: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪ User profiler + backtracer + ML with back propagation

▪ d3.js fluid nonlinear navigation UI

Page 75: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

▪.

▪ ... + +…

▪ .

▪ ?

Page 76: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015
Page 77: 연구자 및 교육자를 위한 계산 및 분석 플랫폼 설계 - PyCon KR 2015

Lablup Inc.

http://www.lablup.com