Disaggregationãå·»ãèµ·ããããããã¯ã¼ã¯æ¥çåç·¨ã«ã¤ãã¦ã®èå¯
ãã1å¹´ã§ããããã¯ã¼ã¯æ¥çã®ãã¸ãã¹ã¢ãã«ãæ¥éã«å¤ããã¤ã¤ããã®ãæãã¾ããç¹ã«ä»æã¯åããæ¿ããã£ãã®ã§è¨é²ã®ããã«ç§ã®åæ(å¦æ³)çµéãæç« ã«ãã¦ã¾ã¨ãã¦ãããã¨ã«ãã¾ãã
AT&T, VerisonãSDN/NFVã«è»¸è¶³ã移ã
AT&TãDomain2.0ãçºè¡¨ããã®ã«ç¶ãã¦ãVerizonãæ£å¼ã« White Boxã«ãããããã¯ã¼ã¯ã®ã½ããã¦ã§ã¢åãNFVåãå ¬å¼ã«èªãã¾ãããããã«ææãåãããå½¢ã§ã¡ãã·ã³ã®æºå¸¯äºæ¥è ã®è²·åã¨15%ã®è¨åæè³åæ¸ãçºè¡¨ãã¦ãã¾ãã
åæ å ±ãã¤ãªãåããã¦èå¯ããã¨ã以ä¸ã®ãããªç¶æ³ãæ³åããã¾ãã
- Juniperã¯ãã¯ã¤ãããã¯ã¹æ¨é²æ´¾(Contrailæè·?)ã¨æ¢åãã¸ãã¹æ¨é²æ´¾(ãã¼ãã¦ã§ã¢ãã¸ãã¹æè·)ã®äºã¤ããããåã£ã¦ãã
- Verizon(Juniperã®å¤§å£é¡§å®¢)ãããä»å¾ã®ãããã¯ã¼ã¯è¨è¨ã«ã¤ã㦠White Box ãåæã«ãããã¨ã®éåãåãã
- åCEOã¯æ¢åãã¸ãã¹æ¨é²æ´¾ã ã£ãããæ¢åãã¸ãã¹ãå®ããããã¨ã«å¤±æãããã解任ããã
- (äºæ³)ä»å¾ã¯ãã¯ã¤ãããã¯ã¹æ¨é²æ´¾ãä¼ç¤¾ã®éå¶æ¨©ãæ¡ããJuniperã¯ã½ããã¦ã§ã¢ã主ä½ã¨ãããã¸ãã¹ã«å¤§ããèµãåã
æ¢ã«ã¯ã©ã¦ãã®ä¸»è¦ãã³ãã¯ãããã¯ã¼ã¯æ©å¨ã® Disaggregation ãå®æ½æ¸ã¿
AWS, Google, Facebook ãªã©ã®ä¸»è¦ãªã¯ã©ã¦ããã³ããçºä¿¡ãã¦ããæ å ±ãèªã¿è§£ãã¨ãå社ã¯æ¢åã®ãããã¯ã¼ã¯ãã³ãã®æ©å¨ã使ããã¨ããµã¼ãã¹ã®é»å®³è¦å ã«ãªã£ã¦ãããã¨ã以åããèªèãã¦ãã¦ãã¼ãã¦ã§ã¢ã¨ã½ããã¦ã§ã¢ã®åé¢(Disaggregation)ãé²ãã¦ãããã¨ãåããã¾ãã
é»å®³è¦å ã®ãã¤ã³ãã¨ãã¦ã¯ã
- è¨å¤§ãªEast-Westãã©ãã£ãã¯ãå¦çããããã«ã¯å¾æ¥ã®North-Southéè¦ã®è¨è¨ã§ã¯ä¸å¯è½ã§ over-subscription freeã§éä¿¡ãã§ããã ãã®å¸¯åãå¿ è¦
- over-subscription freeãåæã«ããã¨ãæ¢åãã³ãã®æ©å¨ã§ã¯ã³ã¹ããåããªããæ¢åãã³ãã®ãããã¯ã¼ã¯æ©å¨ã¯ãé·ããMooreã®æ³åã«å¾ãããå¤æ®µãé«æ¢ã¾ããã¦ãã
- æ¢åãã³ãã®å¼·ã¿ã¨è¨ããã¦ãã巨大ãªã·ã£ã¼ã·åã®ãããã¯ã¼ã¯æ©å¨ãå°å ¥ããã¨ãæ©å¨é害æã®åæ¢ãªã¹ã¯ãä¸æãã¦ãã¾ããã¯ã©ã¦ããã¤ãã£ãã®ã¢ããªã¯åæ£ç°å¢ãåæã§åä½ããã¨ã¯ãããä¸åº¦ã«æ²¢å±±ã®ãã¼ããåæ¢ãããªã¹ã¯ã¯å¤§ãããããããããã¯ã¼ã¯è¨è¨ã¨ãã¦å·¨å¤§ã·ã£ã¼ã·ã使ãã®ã¯ä¸é©å
- æ¢åãã³ãã®ãããã¯ã¼ã¯æ©å¨ã¯ãã½ããã¦ã§ã¢ã«ããèªååã¸ã®å¯¾å¿ãæ®ã©é²ã¾ããé·ãããµã¤ãåãå¼ãèµ·ããã¦ãããã¾ããä¸èº«ããã©ãã¯ããã¯ã¹ã§ãããã¨ã§çºçããé害対å¿ã³ã¹ãã®ä¸æãã¯ã©ã¦ãäºæ¥è ã«ã¨ã£ã¦ã¯æ¬ ç¹ã¨ãªãããã®ãããªç¶æ³ã¯ã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ã®çæã§ããããããããã®ãã½ããã¦ã§ã¢ã§èªååãããã«åãã¦ãããAWS, GoogleãFacebookãªã©ã¤ããã¼ã·ã§ã³ãæ大ã®ä¾¡å¤ã¨ç解ãã¦ããä¼æ¥ã«ã¯åãå ¥ãããããã®ã«ãªã
主è¦ã¯ã©ã¦ãäºæ¥è ãç¨ãã解決çã¯ã以ä¸ã®ãããªæãã§ãã
- Introducing data center fabric, the next-generation Facebook data center network - Facebook Code
- (SPOT301) AWS Innovation at Scale | AWS re:Invent 2014
- Google Cloud Platform Blog: Enter the Andromeda zone - Google Cloud Platform’s latest networking stack
- MicrosoftãFacebookã¯ãæ¢ã« BGP LSDCæ§æã«ãã IP Fabricãå°å ¥ãã¦è¨å¤§ãªEast-Westãã©ãã£ãã¯ã«èããéç¨ãå®ç¾ãã¦ãã
- ãã«ãããã³ããæ§æããå ´åã®ãããã¯ã¼ã¯ã¢ã¼ããã¯ãã£ã¯ MAC-in-IP ç㪠overlay ãæ¢ã«AWSãªã©ä¸»è¦ã¯ã©ã¦ãäºæ¥è ã§ã¯æ¡ç¨ããã¦ãããoverlayã¯è»¢éæ§è½(ãªã¼ãã¼ããã)ã®ç¹ã§ã¯èª²é¡ããããã®ã®ãå®å®ãã¦éç¨ã§ãããã¨ãã¹ã±ã¼ã«ã¢ã¦ãã§ããå©ç¹ãããããç¾æç¹ã§é¸æã§ããæè¯ã®ã¢ã¼ããã¯ãã£ã¨èãããã
- 巨大ã·ã£ã¼ã·ã使ããããã¯ã¹åã®ã¹ã¤ããã使ãå ´åã®æ¬ ç¹ã¯ç®¡çããã¹ããã¼ãæ°ã®ä¸æã«ããéç¨ã³ã¹ããä¸ãããã¨ã ãããããã¯ã¼ã¯æ©å¨ããµã¼ãã¨ã¾ã£ããåãä»æã(chef, puppet, ansibleç)ããããã¸ç®¡çã®ä»çµã¿ãã½ããã¦ã§ã¢ã¨ãã¦ä½ãè¾¼ããã¨ã§ç®¡çã³ã¹ããå¤§å¹ ã«åæ¸ã§ãã
æ¢åãã¼ãã¦ã§ã¢ãã³ãã®ä»å¾ã®å売ã«ã¤ãã¦èãã
主è¦ã¯ã©ã¦ãäºæ¥è ã¯ãã¼ãã¦ã§ã¢ã®èª¿éæ¹æ³ãODMã«åãæ¿ãæ¸ã¿ã®ãããæ¢åãããã¯ã¼ã¯æ©å¨ãã³ãã«ã¨ã£ã¦ã¯ã¯ã©ã¦ãäºæ¥è ã主è¦ãªåçæºã«ãªãå¯è½æ§ã¯ä½ããªãã¨äºæ³ããã¾ãããããªãã¨ãæ¢åãã³ãã¯å¿ ç¶çã«ä¼æ¥åãã®å売ã«ã·ããããããå¾ãªãã§ããããã¡ãã«ã¤ãã¦ãæ°è¦éçºã«ã¤ãã¦ã¯ã¯ã©ã¦ãã«å·»ãåããã¦ãããã¨ãäºæ³ããã¾ãã
ãµã¼ãã®ä¸çã§èµ·ãã£ãåºæ¥äº(IBMã®x86ãµã¼ãäºæ¥æ¤éãHPå社åãªã©)ã®ã¢ããã¸ã¼ããããã¯ã¼ã¯æ¥çã«å½ã¦ã¯ããã¨ãæ¢åãããã¯ã¼ã¯æ©å¨ãã³ããçãæ®ãããã«ã¯å社åãã¦ã½ããã¦ã§ã¢äºæ¥ã主ä½ã¨ããOSSã®ãµãã¼ããµã¼ãã¹ãã©ã¤ã»ã³ã¹ãµã¼ãã¹ã«ç§»è¡ããå¿ è¦ãããã®ããããã¾ããã
Riak2.0ã»ãã¥ãªãã£æ©è½ã®å¼·åå 容ã«ã¤ãã¦èª¿æ»ãã¾ãã
ã¿ããªã§ããRiak Advent Calendar 2013 ã¯ãªã¹ãã¹ã¤ãã®ãã¿ã¨ãã¦æ稿ãã¾ãã
次æãã¼ã¸ã§ã³ã®Riak(Riak2.x)ã§ã¯ãCRDTãStrong ConsistencyãYokozuna Searchãªã©ãæ§ã ãªæ©è½å¼·åãäºå®ããã¦ãã¾ããä»åã®æ稿ã§ã¯ãRiak2.0ã§æ¡å¼µãäºå®ããã¦ããã»ãã¥ãªãã£æ©è½ã«ã¤ãã¦ã¾ã¨ãã¾ãã
æ å ±æº
- Add Security to Riak · Issue #355 · basho/riak · GitHub
- securityæ©è½ éçºã®æ§å
- Riak HTTP security session example · GitHub
- å ·ä½çãªä½¿ãæ¹ã®ä¾
åºæ¥ããã¨
åãã£ããã¨
- ã¾ã è²ã
ã¨å®è£
ãå®äºãã¦ããªã
- riak-admin security delete-source ãç¡ããªã©
使ãæ¹ã®ä¾
securityã®è¨å®æ¹æ³ã¯ãriak-adminã³ãã³ãã®second level command ã« "security"ãå¢ããã®ã§ããã¡ããç¨ãããã¨ã§è¨å®ã§ãã¾ãã
- ã¦ã¼ã¶å'testuser'ã追å ããå ¨ã¦ã¼ã¶ããã®127.0.0.1/32 ããã®ã¢ã¯ã»ã¹ã許å¯ãã
$ dev/dev1/bin/riak-admin security add-user testuser $ dev/dev1/bin/riak-admin security add-source all 127.0.0.1/32 trust
- ã¦ã¼ã¶å'sean'ã追å ãããã¹ã¯ã¼ã'justopenasocket'ã§ã®ã¢ã¯ã»ã¹ã許å¯ãã
$ dev/dev1/bin/riak-admin security add-user sean password=justopenasocket $ dev/dev1/bin/riak-admin security add-source sean 0.0.0.0/0 password
- PAMèªè¨¼ã許å¯ãã
$ dev/dev1/bin/riak-admin security add-source all 192.168.1.0/24 trust $ dev/dev1/bin/riak-admin security add-source all 0.0.0.0/0 pam service=riak
- Usage of security second level command
sogabe@sherco:~/src-github/riak$ dev/dev1/bin/riak-admin security Usage: riak-admin security <command> The following commands modify users and security ACLs for Riak: add-user <username> [options] add-source all|<users> <CIDR> <source> [options] grant <permissions> ON ANY|<type> [bucket] TO <users> revoke <permissions> ON ANY|<type> [bucket] FROM <users> print-users print-sources print-user <user>
- ã¦ã¼ã¶'testuser'ã« ãã±ããå'mybucket'ã«å¯¾ã㦠get ã®ã¢ã¯ã»ã¹æ¨©ãä¸ãã
$ dev/dev1/bin/riak-admin security grant riak_kv.get ON mybucket TO testuser
- ã¦ã¼ã¶'sean'ã«ãã±ããå'mybucket'ã«å¯¾ã㦠get,put ã®ã¢ã¯ã»ã¹æ¨©ãä¸ãã
$ dev/dev1/bin/riak-admin security grant riak_kv.get,riak_kv.put ON mybucket TO sean
- ã¯ã¤ã«ãã«ã¼ã表è¨ãç¨ãã¦ã'myapp_*'ãã±ããã®ã¢ã¯ã»ã¹ä»¶ãä¸ãã
$ dev/dev1/bin/riak-admin security grant riak_kv.put ON myapp_* to testuser (ç¾æç¹ã§ã¯æªã åä½ãã)
- security è¨å®æ å ±ã®ä¸è¦§ã表示ãã(print)
sogabe@sherco:~/src-github/riak$ dev/dev1/bin/riak-admin security print-users +--------------------+--------------------+----------------------------------------+------------------------------+ | username | roles | password | options | +--------------------+--------------------+----------------------------------------+------------------------------+ | sean | |c57e004ee67d6260863b1050e58d93405f5900fd| [] | | testuser | | | [] | +--------------------+--------------------+----------------------------------------+------------------------------+ sogabe@sherco:~/src-github/riak$ dev/dev1/bin/riak-admin security print-sources +--------------------+--------------+----------+--------------------+ | users | cidr | source | options | +--------------------+--------------+----------+--------------------+ | all | 127.0.0.1/32 | trust | [] | | all |192.168.1.0/24| trust | [] | | sean | 0.0.0.0/0 | password | [] | | all | 0.0.0.0/0 | pam |[{"service","riak"}]| +--------------------+--------------+----------+--------------------+
- security ã¦ã¼ã¶æ¯ã®è¨å®æ å ±ã表示ãã(print-user)
sogabe@sherco:~/src-github/riak$ dev/dev1/bin/riak-admin security print-user testuser Inherited permissions +--------------------+----------+----------+----------------------------------------+ | role | type | bucket | grants | +--------------------+----------+----------+----------------------------------------+ Applied permissions +----------+----------+----------------------------------------+ | type | bucket | grants | +----------+----------+----------------------------------------+ | mybucket | * | riak_kv.get | +----------+----------+----------------------------------------+ sogabe@sherco:~/src-github/riak$ dev/dev1/bin/riak-admin security print-user sean Inherited permissions +--------------------+----------+----------+----------------------------------------+ | role | type | bucket | grants | +--------------------+----------+----------+----------------------------------------+ Applied permissions +----------+----------+----------------------------------------+ | type | bucket | grants | +----------+----------+----------------------------------------+ | mybucket | * | riak_kv.put, riak_kv.get | +----------+----------+----------------------------------------+
試ãã¦ã¿ã
2013å¹´12æç¾å¨ãriak2.0ã¯éçºä¸ãªã®ã§ github ã® developãã©ã³ããç¨ãã¦ãã¹ãããã¾ãã
riakã®ã½ã¼ã¹ã³ã¼ãããã¦ã³ãã¼ããããã«ããã
$ git clone https://github.com/basho/riak $ cd riak $ make stagedevrel
riak securityã®è¨å®
2013å¹´12æç¾å¨ãdevelopãã©ã³ãã§ã¯ securityæ©è½ãæå¹ã«ããããã®ã³ã¼ããå
¥ã£ã¦ããªãã®ã§ãæåã§ã³ã¼ããä¿®æ£ãã¦ãã¹ãããã¾ãã
ä¸è¨ã®ä¾ã§ã¯ãriak.conf ã« "security = on"ã¨è¨è¿°ãããã¨ã§securityæ©è½ãæå¹ã«ã§ããããã«ãªãã¾ãã
å°ãriak2.0ããã¯ã³ã³ãã£ã°ãã¡ã¤ã«ã Erlangç±æ¥ã®ãã®ã§ã¯ãªã cuttlefish ã¨å¼ã°ãããã¼ãµã使ããã¨ã«ãªã£ãã®ã§ãä¸è¨ã®ããã« cuttlefish ç¨ã® schemaãã¡ã¤ã«ã«å¿
è¦ãªè¨å®ã追å ãã¾ãã
$ vi deps/riak_core/priv/riak_core.schema (ä¸è¨ã追å ) %% %% XXX security %% {mapping, "security", "riak_core.security", [ {default, off}, {datatype, {enum, [on, off]}} ]}. { translation, "riak_core.security", fun(Conf) -> Setting = cuttlefish:conf_get("security", Conf), case Setting of on -> true; off -> false; _Default -> false end end }. $ make stagedevrel (ãã«ããã) $ vi dev/dev1/etc/riak.conf ... (SSLã® cert, key ãè¨å®ãã) ## Default cert location for https can be overridden ## with the ssl config variable, for example: ssl.certfile = ./etc/cert.pem ## Default key location for https can be overridden ## with the ssl config variable, for example: ssl.keyfile = ./etc/key.pem ... (https ãæå¹ã«ãã¦ã代ããã«httpãç¡å¹ã«ãã) listener.https.internal = 127.0.0.1:10018 ... #listener.http.internal = 127.0.0.1:10018 ... (ã»ãã¥ãªãã£æ©è½ãæå¹ã«ãã) security = on $ ulimit -n 4096 $ dev/dev1/bin/riak start
curlãç¨ãã Authentication / Authorizationã®ãã¹ã
$ curl -k -i https://localhost:10018/riak/test/doc HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Riak" Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:08:15 GMT Content-Type: text/html Content-Length: 159 <html><head><title>401 Unauthorized</title></head><body><h1>Unauthorized</h1>Unauthorized<p><hr><address>mochiweb+webmachine web server</address></body></html> $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Riak" Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:08:15 GMT Content-Type: text/html Content-Length: 159 <html><head><title>401 Unauthorized</title></head><body><h1>Unauthorized</h1>Unauthorized<p><hr><address>mochiweb+webmachine web server</address></body></html> $ dev/dev1/bin/riak-admin security add-user andrew $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Riak" Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:09:51 GMT Content-Type: text/html Content-Length: 159 <html><head><title>401 Unauthorized</title></head><body><h1>Unauthorized</h1>Unauthorized<p><hr><address>mochiweb+webmachine web server</address></body></html> $ dev/dev1/bin/riak-admin security add-source andrew 127.0.0.1/32 trust $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc HTTP/1.1 403 Forbidden Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:11:03 GMT Content-Type: text/plain Content-Length: 154 Permission denied: User 'andrew' does not have'riak_kv.get' on {<<"default">>, <<"test">>} $ dev/dev1/bin/riak-admin security grant riak_kv.get ON default test TO andrew $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc HTTP/1.1 404 Object Not Found Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:12:17 GMT Content-Type: text/plain Content-Length: 10 not found $ curl -k -i --user andrew:foo https://localhost:10018/riak/test2/doc HTTP/1.1 403 Forbidden Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:13:04 GMT Content-Type: text/plain Content-Length: 155 Permission denied: User 'andrew' does not have'riak_kv.get' on {<<"default">>, <<"test2">>} $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc -d "hello world" HTTP/1.1 403 Forbidden Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:13:54 GMT Content-Type: text/plain Content-Length: 154 Permission denied: User 'andrew' does not have'riak_kv.put' on {<<"default">>, <<"test">>} $ dev/dev1/bin/riak-admin security grant riak_kv.put ON default test TO andrew $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc -d "hello world" HTTP/1.1 204 No Content Vary: Accept-Encoding Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:14:56 GMT Content-Type: application/x-www-form-urlencoded Content-Length: 0 $ curl -k -i --user andrew:foo https://localhost:10018/riak/test2/doc -d "hello world" HTTP/1.1 403 Forbidden Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:15:49 GMT Content-Type: text/plain Content-Length: 155 Permission denied: User 'andrew' does not have'riak_kv.put' on {<<"default">>, <<"test2">>} $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc HTTP/1.1 200 OK X-Riak-Vclock: a85hYGBgzGDKBVIcR4M2cgetf/4qgymRMY+V4UOpyhm+LAA= Vary: Accept-Encoding Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Link: </riak/test>; rel="up" Last-Modified: Tue, 17 Dec 2013 07:14:56 GMT ETag: "59NlprW7hUCSUVKznH6VKM" Date: Tue, 17 Dec 2013 07:16:29 GMT Content-Type: application/x-www-form-urlencoded Content-Length: 11 hello world $ dev/dev1/bin/riak-admin security revoke riak_kv.get,riak_kv.put ON default test FROM andrew $ curl -k -i --user andrew:foo https://localhost:10018/riak/test/doc HTTP/1.1 403 Forbidden Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:19:20 GMT Content-Type: text/plain Content-Length: 154 Permission denied: User 'andrew' does not have'riak_kv.get' on {<<"default">>, <<"test">>} $ curl -k -i --user andrew:foo -XPUT https://localhost:10018/riak/test/doc -d "hello world" HTTP/1.1 403 Forbidden Server: MochiWeb/1.1 WebMachine/1.10.5 (jokes are better explained) Date: Tue, 17 Dec 2013 07:18:52 GMT Content-Type: text/plain Content-Length: 154 Permission denied: User 'andrew' does not have'riak_kv.put' on {<<"default">>, <<"test">>}
OpenStack Swiftã®ä»£ããã«Riak-CSã使ã£ã¦ã¿ã
OpenStackã§ã¯ãªãã¸ã§ã¯ãã¹ãã¬ã¼ã¸ãµã¼ãã¹ã¨ãã¦Swiftã使ãã¾ãããAPIã¬ã¤ã¤ã§å·®ãæãå¯è½ãªã³ã³ãã¼ãã³ãã¨ãã¦SwiftStackãRiak-CSãªã©ãããã¾ããä»åã®è¨äºã§ã¯ãåæ£ãªãã¸ã§ã¯ãã¹ãã¬ã¼ã¸ Riak-CS ãOpenStackã¨çµã¿åãããæ¹æ³ã«ã¤ãã¦ã¾ã¨ãã¦ã¿ã¾ãã
Riak-CSã§åºæ¥ããã¨
Riak-CS㯠Basho Technologies社ãéçºããAmazon S3ã®APIãæã¤åæ£ãªãã¸ã§ã¯ãã¹ãã¬ã¼ã¸ã®ã½ããã¦ã§ã¢ã§ã2013å¹´3æã«ãªã¼ãã³ã½ã¼ã¹åããã¾ãããRiak-CSã¯åæ£ãã¼ã¿ãã¼ã¹ Riak ã®ä¸ã§åä½ããã¢ã¼ããã¯ãã£ãåã£ã¦ãããããRiakã®ç¹é·ã§ããé«ãAvailabilityãScalabilityãå®ç¾ããã¦ãã¾ãã
Swiftã§ã¯é£½ã足ããªã人ãRiakã大好ããªäººã¯ãæ¯éãã®è¨äºãåèã« OpenStack ã®ãªãã¸ã§ã¯ãã¹ãã¬ã¼ã¸ã Riak-CS ã«ãã¦ã楽ãã¿ãã ããã
æ å ±æº
Riak-CSã対å¿ãã¦ããèªè¨¼æ¹å¼
Riak-CSãOpenStack KeyStoneã¨é£ä¿ãããéã«å©ç¨ã§ããèªè¨¼æ¹å¼ã¯ä»¥ä¸ã®2ã¤ãããã¾ãã
Riak-CSã対å¿ãã¦ãã SwiftäºæAPI
Riak-CSã§å©ç¨ã§ãã SwiftäºæAPIã¯ä»¥ä¸ã®éãã§ãã
- List Containers(lists all buckets for authenticated user)
- List Objects
- Create Container
- Delete Container
- Get Object
- Create or Update Object
- Delete Object
ã¤ã³ã¹ãã¼ã«æ¹æ³
æ¬è¨äºã§ã¯ãã½ã¼ã¹ã³ã¼ããããã«ãããå½¢ã§ã®ã¤ã³ã¹ãã¼ã«æ¹æ³ã解説ãã¾ããkeystoneã«ã¤ãã¦ã¯ãdevstackãç¨ãã¦ã¤ã³ã¹ãã¼ã«ãã¾ãã
riak, riak-csåã³stanchionã®ã½ã¼ã¹ã³ã¼ãããã¦ã³ãã¼ããã
$ git clone https://github.com/basho/riak $ git clone https://github.com/basho/riak_cs $ git clone https://github.com/basho/stanchion
riakããã«ããã
$ cd riak $ git branch -b 1.4.2 refs/tags/1.4.2 $ make stagedevrel $ cd ..
riak-csããã«ããã
$ cd riak_cs $ git branch -b 1.4.3 refs/tags/1.4.3 $ make stagedevrel $ cd ..
stanchionããã«ããã
$ cd stanchion $ git branch -b 1.4.3 refs/tags/1.4.3 $ make devrel $ cd ..
riakã®è¨å®ãriak-csåãã«ä¿®æ£ããriakããã»ã¹ãèµ·åãã
$ cd riak $ vi dev/dev1/etc/app.conf
(riak_kv storage_backend ã®ç®æãã³ã¡ã³ãããä¸è¨ã追å ) {add_paths, ["/home/foobar/src-github/riak-swift-test/riak_cs/dev/dev1/lib/riak_cs/ebin"]}, {storage_backend, riak_cs_kv_multi_backend}, {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]}, {multi_backend_default, be_default}, {multi_backend, [ {be_default, riak_kv_eleveldb_backend, [ {max_open_files, 50}, {data_root, "./data/leveldb"} ]}, {be_blocks, riak_kv_bitcask_backend, [ {data_root, "./data/bitcask"} ]} ]}, (riak_core ä¸è¨ã®é ç®ã追å ) {default_bucket_props, [{allow_mult, true}]},
$ ulimit -n 4096 $ dev/dev1/bin/riak start $ cd ..
riak-csã®è¨å®ãä¿®æ£ããriak-csããã»ã¹ãèµ·åãã
$ cd ../riak_cs $ vi dev/dev1/etc/app.config
(adminã¢ã«ã¦ã³ããä½æãããããä¸æçã«èªè¨¼ç¡ãã®è¨å®ã«ãã) {anonymous_user_creation, true}, (riakã®ãã¼ãè¨å®ãå¤æ´ãã) riak_cs, ... {riak_pb_port, 10017 } ,
$ dev/dev1/bin/riak-cs start
stanchionããã»ã¹ãèµ·åãã
$ vi dev/stanchion/etc/app.config
(stanchion riakãã¼ããå¤æ´ãã) {stanchion,... {riak_pb_port, 10017 },
admin userãä½æãã
$ curl -H 'Content-Type: application/json' \ -X POST http://localhost:8071/riak-cs/user \ --data '{"email":"[email protected]", "name":"admin user"}'
以ä¸ã®ãããªã¡ãã»ã¼ã¸ãè¿ã£ã¦ãã
{ "email" : "[email protected]", "status" : "enabled", "key_id" : "KDGRAVNHTYYF8XNTD7CD", "name" : "admin user", "id" : "e52d4a6ee043848fceecbfeee10f48076924ef2a758d03d9554ecec05d6d1233", "display_name" : "admin", "key_secret" : "9IucFpt32qbAltZb_kEWa5N3bD_N9kbSB5mxsg==" }
riak-cs, stanchionã® Admin User Credentialè¨å®ãä¸è¨ã§ä½æãããã®ã«å¤æ´ãã¦ãanonymous user creation ã disable ã«æ»ã
$ vi dev/stanchion/etc/app.config $ dev/stanchion/bin/stanchion restart $ cd ../riak_cs $ vi dev/dev1/etc/app.config $ dev/dev1/bin/riak-cs restart
s3cmdã§åä½ãã¹ã (ã¾ã㯠Riak-CSåä½ã®åä½ãã¹ã)
$ sudo apt-get install s3cmd $ vi 00s3.cfg
(00s3.cfg) [default] access_key = KDGRAVNHTYYF8XNTD7CD bucket_location = US cloudfront_host = cloudfront.amazonaws.com cloudfront_resource = /2010-07-15/distribution default_mime_type = binary/octet-stream delete_removed = False dry_run = False enable_multipart = False encoding = UTF-8 encrypt = False follow_symlinks = False force = False get_continue = False gpg_command = /usr/local/bin/gpg gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_passphrase = password guess_mime_type = True host_base = s3.amazonaws.com host_bucket = %(bucket)s.s3.amazonaws.com human_readable_sizes = False list_md5 = False log_target_prefix = preserve_attrs = True progress_meter = True proxy_host = localhost proxy_port = 8071 recursive = False recv_chunk = 4096 reduced_redundancy = False secret_key = 9IucFpt32qbAltZb_kEWa5N3bD_N9kbSB5mxsg== send_chunk = 4096 simpledb_host = sdb.amazonaws.com skip_existing = False socket_timeout = 300 urlencoding_mode = normal use_https = True verbosity = WARNING
$ s3cmd -c 00s3.cfg ls $ s3cmd -c 00s3.cfg mb s3://test $ s3cmd -c 00s3.cfg put LICENSE s3://test/obj1 $ s3cmd -c 00s3.cfg ls s3://test/ $ s3cmd -c 00s3.cfg get s3://test/obj1 -
OpenStack Keystoneã®ã¤ã³ã¹ãã¼ã«ãããã»ã¹èµ·å
$ cd .. $ git clone https://github.com/openstack-dev/devstack $ cd devstack $ cp samples/localrc . $ vi localrc
(localrcã®ä¿®æ£) (Swiftåã³Keystoneã®ã¿ãåä½ããããããä¸è¨ã³ã³ãã£ã°ãä»ã足ã) KEYSTONE_BRANCH=stable/havana SERVICE_TOKEN=$ADMIN_PASSWORD disable_all_services enable_service key mysql
$ ./stack.sh $ source openrc admin admin $ keystone service-create --name=swift --type="object-store" \ --description="Swift Service" $ keystone endpoint-create \ --region RegionOne \ --service_id (service id) \ --publicurl "http://localhost:8071/v1/AUTH_\$(tenant_id)s" \ --adminurl "http://localhost:8071" \ --internalurl "http://localhost:8071/v1/AUTH_\$(tenant_id)s" $ keystone catalog
S3 APIã®è¨å®ããã¹ã
$ cd ../riak_cs $ vi dev/dev1/etc/app.config
(app.config) - devstackã®ã³ã³ãã£ã°ã§æå®ãã token ã追å {os_admin_token, "nomoresecrete"}, (Auth URL ãæå®ãã) {os_auth_url, "http://(host or ip address):35357/v2.0/"}, {rewrite_module, riak_cs_s3_rewrite }, {auth_module, riak_cs_keystone_auth },
$ dev/dev1/bin/riak-cs restart $ keystone user-create --name testuser --pass test --email [email protected] --tenant-id (demo tenant id) --enabled true $ keystone role-create --name swiftoperator $ keystone user-role-add --user-id (user-id) --role-id (role-id) --tenant-id (tenant-id) $ keystone ec2-credentials-create --user_id (uid) --tenant_id (tenant-id) $ vi 01s3.cfg (access_key, secret_key ã ec2-credentials-create ã§çæããããã®ã«å¤ãã) $ s3cmd -c 01s3.cfg mb s3://bucket2 $ s3cmd -c 01s3.cfg ls $ echo "ilovechickenilovelivermeowmixmeowmixwilldeliver" > upload.txt $ s3cmd -c 01s3.cfg put upload.txt s3://bucket2 $ s3cmd -c 01s3.cfg get s3://bucket2/upload.txt download.txt $ s3cmd -c 01s3.cfg del s3://bucket2/upload.txt $ s3cmd -c 01s3.cfg rb s3://bucket2
OpenStack(Swift) APIã®è¨å®ããã¹ã
$ vi dev/dev1/etc/app.config
(app.config) {rewrite_module, riak_cs_oos_rewrite }, (API ã Swift API ã«å¤æ´ãã)
$ dev/dev1/bin/riak-cs restart $ curl -s -d '{"auth": {"tenantName": "demo", "passwordCredentials": {"username": "testuser", "password": "test"}}}' -H 'Content-type: application/json' http://localhost:5000/v2.0/tokens | json_pp
$ export ID=... (tokené ç®ã®ä¸ã®idã X-Auth-Tokenã¨ãã¦ä½¿ã) $ export URL=... (object-store service ã® serviceCatalogãããpublicURLã®æ å ±ãå¾ã) $ curl -X PUT -H 'X-Auth-Token: '$ID $URL/bucket1 $ curl -H 'X-Auth-Token: '$ID $URL $ curl -X PUT --data 'abcdefghi123456789' -H 'X-Auth-Token: '$ID $URL/bucket1/object1
OSSA Explorer è²·ãã¾ãã
SCORPA T-RIDEãããOSSA Explorer ã«ä¹ãæãããã¨ã«ãã¾ããã
ã«ãã´ãªã¨ãã¦ã¯ãKTM Freeride350 ã®ãããªããã©ã¤ã¢ã«ã£ã½ãéã³æ¹ã楽ããããªããã¼ããã¤ã¯ã¨ãã£ãã¨ããã§ãã
ä»æå·ã®ãã©ã¤ã¢ã«ç³»éèª(èªç¶å±±éä¿¡ãã¹ãã¬ã¼ããªã³)ã«è©³ç´°ãªã¬ãã¼ããè¼ã£ã¦ããã®ã§è³¼å
¥ãæ¤è¨ããã¦ãã人ã¯ä¸èªããããããã¾ãã
ã¾ã æ
£ããé転ä¸ãªã®ã§è»½ãä¹ãè¾¼ãã ã ãã§ãããä¹ã£ãæãã¯ããã©ã¤ã¢ã«ã®è»½å¿«ãã¨åãåãã®è¯ãã追åãã¤ã¤ãããã£ããã¨ããã·ã¼ããä»ãã¦ããã®ãç´ æµã§ããééã¯ä¹¾ç¥ééã§80kgåå¾ã¨ããã¬ã¼ã«è»ã¨ãã¦ã¯ãã®ä¸ãªã軽ãã§ããT-RIDEã¨æ¯ã¹ãã¨ã以ä¸ã®ç¹ãåªãã¦ãã¾ãã
- ãã©ã¤ã¢ã«è»ä¸¦ã¿ã®ã¿ã¤ãã¿ã¼ã³ãã§ãã
- ãã¤ã¼ã«ãã¼ã¹ã¯OSSA TR280iã¨åä¸!
- ããã³ããããããªã¢ãããã楽ã
- ä½éã§ããã£ããç²ãã¨ã³ã¸ã³ç¹æ§
- T-RIDEãä½éè¦æãªã®ã«æ¯ã¹ãã¨å¥æ¬¡å ãªç¨ã«ä¹ãããã
éã«ãT-RIDEã¨æ¯ã¹ã¦å£ããããªã¨ããã¯ã
- åºãã¨ããããã£é£ã°ãã®ã¯è¦æãã..
- ã¾ã 試ãã¦ããªãã®ã§çµè«ã¯åºãã¾ããããã³ã³ãã¯ããªè»ä½ãã¤ãã£ã¹ã¿ã¼ã®ç«ã£ãããã³ããã©ã¼ã¯ã®ãããé«éæ§è½ã¯é«ããªãããããã£ã¨ããç§ã®è åã§ããã°ããã»ã©åé¡ã«ãªããªããããããªãã§ã
Freeride350ã¨ãããOSSAã¨ãããã¨ã¼ãããã®ãã¤ã¯ã¡ã¼ã«ã¯æ¬å½ã«ç´ æ´ããããã¤ã¯ãä½ãã¾ããã©ã¡ããæ¥æ¬ã®æ³å¾è¦å¶ã§ã¯å ¬éãèµ°ãã®ã¯é£ããã§ããããªããã¼ãã§èµ°ããã¨è²ã ãªæ¥½ãã¿æ¹ãåºããããã§ãã
PaaS, IaaS, ãã©ã¤ãã¼ãã¯ã©ã¦ã å©ç¨è ã®å±æ§ãèãã
1/28ã«ãmrubyã®å¤ã¹ãã®è¬æ¼æã«ãPaaSã®å©ç¨è ã«ã¤ãã¦ææã¢ã³ã±ã¼ããåã£ãçµæãèå³æ·±ãã£ãã®ã§ãæ³å®ãããå©ç¨è ã®å±æ§ãæç« ã«ã¾ã¨ãã¦ã¿ã¾ãã
- PaaS
- åå è ã®ããªãã¨1/2以ä¸ãPaaSå©ç¨ã®çµé¨ãããã¨ã®ãã¨
- 主ãªå©ç¨è
:
- ãæ軽ã«Railsãªã©ã®Webãç«ã¡ä¸ãããå人
- ä½ã³ã¹ãã§è¿ éã«ãµã¼ãã¹ãç«ã¡ä¸ãããã¹ã¿ã¼ãã¢ããä¼æ¥
- IaaS
- åå è ã®1/3ç¨åº¦ãå©ç¨ãããã¨ããã¨ã®ãã¨ãç§ã®äºæ³ã§ã¯IaaSãæ大å¤æ°ã ã£ãã®ã§ãå°ã é©ãã¾ãã
- 主ãªå©ç¨è
:
- PaaSã ã¨å²é«æãåºã¦ãããµã¼ãã¹äºæ¥è ãã¾ãã¯å人
- ä¾ãã°ãHeroku ã¯æå°æ§æãç¡æã§ããå¦çæ§è½ãä¸ãã¦ããã¨(EC2ã«æ¯ã¹ã¦)å²é«æãå¾ã ã«åºã¦ãã¾ããã©ããã«æçåå²ç¹ãããã®ã§ããã
- ãã©ã¤ãã¼ãã¯ã©ã¦ã(IaaS, PaaSå«ã)
ç§ã®å½åã®äºæ³ã§ã¯ããã³ãããã¯ã¤ã³ãå«ã人ãIaaSããã©ã¤ãã¼ãã¯ã©ã¦ããå©ç¨ããã®ã ã¨æã£ã¦ããã®ã§ããããã³ãããã¯ã¤ã³ãå«ã人ã¯ä¸ã®ä¸çã«ã¯ããç¨å¤ããªãã®ãããããªãã§ããã©ã¡ããã¨ããã¨ãã³ã¹ããåºæºã« PaaS/IaaS/ãã©ã¤ãã¼ãã¯ã©ã¦ã ã決ãã¦ãã人ãå¤ãã®ãããããªãã§ããã
mrubyã®å¤ã¹ åå ãã¾ãã
æ¨æ¥ã¯ã1/28(æ) 15:00-ããã® ãmrubyããããã«ã½ã³ãã¨17:00-ããã®ãmrubyã®å¤ã¹ãã«åå ãã¦ãã¾ããã
ä»åmrubyãã¿ã§ç§ãçºè¡¨ããæ©ä¼ãé ãã¾ãããããã¡ãã«ã¤ãã¦ã¯å¥éä¼ç¤¾æä¾ã®ããã°ã§å
¬éããäºå®ã§ããæ¬ããã°ã§ã¯ãã¾ã¤ãã¨ããã²ãããã®mrubyè¬æ¼å
容ã«ã¤ãã¦ã¾ã¨ãã¦ã¿ã¾ãã
ç§ã®ç¥ãéãã90åã®æéãããã¦mrubyã®è©³ç´°ã«ã¤ãã¦ã¾ã¤ãã¨ãããã説æãã¦ããã ããæ©ä¼ã¯ä»åãåãã¦ã ã¨æãã¾ãã
mrubyã®ãã¯ãã«ã«ãªè©±ã¯ä»åãåãã¦
mrubyã«ãããçµã¿è¾¼ã¿ã¨ã¯
mrubyã«å¿ è¦ãªãã®
- çµã¿è¾¼ã¿API
- 移æ¤æ§(Portability)
- POSIXéä¾åãOSéä¾å, C99ã®ç¯å²å 㧠(ã§ããã ã)
- ãã ããVisual Cã§ãåä½ããããã«ãC99ã®å¶éã¯ç·©åã¦ãã
- æ§æå¯è½æ§
- ã·ã¹ãã ã«å¯¾ããæé©ãªã«ã¹ã¿ã ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³
- ã½ãããªã¢ã«ã¿ã¤ã
- è»ã®ABSãªã©ã«ã¯ä¸åã(ãã¼ããªã¢ã«ã¿ã¤ã ã¯é£ãã)
- ã²ã¼ã ã¸ã®çµã¿è¾¼ã¿ã¬ãã«ã®ãªã¢ã«ã¿ã¤ã æ§
- GCã®è¨è¨
ç¦å²¡ã®äººãã¡ããã¨ã¦ãã¢ããã¼ã·ã§ã³ãé«ãã£ã
- å¹³æ22年度å°åã¤ããã¼ã·ã§ã³åµåºç 究éçºäºæ¥ã«æ¡æããã¦mrubyéçºãé²ãããã¨ã«ãªã£ã
- ãã®ããã¸ã§ã¯ããç¡ããã°mrubyã¯çã¾ãã¦ããªãã£ããããããªã
- æ¨å¹´4æã«ã½ã¼ã¹ã³ã¼ããgithubä¸ã«å ¬éãã
çµã¿è¾¼ã¿API
- mrb_open()
- mrb_load_string()
- mrb_close()
mruby VM
- æ§ç§° Rite VM
- 32bit word machine
- å½ä»¤ç¨®å¥ 7bit
- operand A: 9bit
- operand B: 8bit
- operand C: 7bit
- register machine
- ãªãã©ã³ãã§ã¬ã¸ã¹ã¿çªå·ãæå®
- ãªãã¡ãã£ã¦ã¬ã¸ã¹ã¿ãã·ã³
struct mruby_value
mruby C API
è¨èªã¨ãã¦ã®lua
- ã³ã³ãã¯ããåªå ã®ãããè¨èªã¨ãã¦ã®æ©è½ã¯å°ãªã
- rubyã£ã½ãæ¸ããã³ã³ãã¯ããªè¨èªã欲ããã¨ããã¢ããã¼ã·ã§ã³ããã£ã
移æ¤æ§
æ§æå¯è½æ§
ãªã³ã«ãªãã·ã§ã³
- ã³ã³ãã¤ã©ã®æé¤ãã§ãã
- eval, loadè¦ããªãå ´å
- ã³ã¼ãçæå¨ã®æé¤
- äºåã³ã³ãã¤ã«
- bin/mrbcã使ã
- test/mrbtest ã§ã使ã£ã¦ãã
è¤éãªãã«ãæ¡ä»¶
- 種ã ã®ãã©ãããã©ã¼ã ãã³ã³ãã¤ã©ã¸ã®å¯¾å¿ãå¿ è¦
- ã¯ãã¹ã³ã³ãã¤ã«ãå¿ è¦
- rubyã³ã¼ãã®ã³ã³ãã¤ã«ããªã³ã¯ãå¿ è¦
- Ruby/Rake ã使ã£ããã«ãæ¹å¼ã«ç§»è¡ãã(2013å¹´1æé )
mrbgems
- ã©ã¤ãã©ãªã®çµã¿è¾¼ã¿ãã§ãã
- åçã«ãã¼ãããæ©è½ã¯ç¡ããã³ã³ãã¤ã«æã«ãªã³ã¯ãã
- ãã©ãããã©ã¼ã éä¾å
- mrubyã½ã¼ã¹ã³ã¼ãå¤ã®ã³ã¼ããæå®ã§ãã
- githubãæå®ãããã¨ãå¯è½
mgem
- gem install mgem ã§ç°¡åã¤ã³ã¹ãã¼ã«
- mrbgems ã管çã§ãã
- mgem update ããã°ããªã¹ããæ´æ°ã§ãã
- 使ãæ¹ã®ä¾
- mgem add mruby-env
- mgem config > build_config.rb
ã½ãããªã¢ã«ã¿ã¤ã
- GC
- ã¹ã«ã¼ããã
- å®è¡æéä¸ã«GCã®å ããå²å
- æ大åæ¢æé
- æãé·ãåæ¢æé
- ãªã¢ã«ã¿ã¤ã æ§ã®è©ä¾¡ææ¨
- çµã¿è¾¼ã¿ã®é åã§ã¯ãã¹ã«ã¼ããããããæ大åæ¢æéãéè¦ãããã¨ãå¤ã
- ãã¼ã¯ã¢ã³ãã¹ã¤ã¼ãGC
- mark phase 㨠seep phase ã«åããã
- mark phase
- top levelå¤æ°ã root ã«ãã
- æ°ç ã¤ãªãã«ã¢ã¯ã»ã¹ã§ãããªãã¸ã§ã¯ããæ¢ç´¢
- è¦ã¤ãããªãã¸ã§ã¯ãããã¼ã¯ãã
- sweep phase
- å ¨ã¦ã®ãªãã¸ã§ã¯ããæ¢ç´¢ããæ»ãã§ãããªãã¸ã§ã¯ããæ¹ä¿®ãã
- ä¿å®çGC
- Arena
- ã¤ã³ã¯ãªã¡ã³ã¿ã«GC
- ä¸ä»£å¥GC
- ã¤ã³ã¯ãªã¡ã³ã¿ã«ä¸ä»£å¥GC
- ã¹ã«ã¼ããã
太é½å çºé»ç®¡çã·ã¹ãã
- æ±èãããéçº
- 管çã¹ãã³ã10å¹´åä½ã¨é·ããããPCããå¯åé¨ã®å°ãªãæ©å¨ãæé©
- mrubyã使ã£ã¦ãããã¿ã¤ããå®è£ ãã
èªåæ©ã¡ã³ãã·ã¹ãã
- å¯å£«é»æ©ãããéçº
- ä¸å½ã®åä¼ç¤¾ãã³ã¼ããæ¸ãã¦ãã
- ruby -> rule based compiler -> cè¨èª ã«å¤æãã¦ä½¿ã£ã¦ãã
- ã¡ã³ããã³ã¹ã·ã¹ãã (ã¬ã·ã¼ãå°å)åãã«ãããã¿ã¤ããä½æãã
ruby対å¿ã¤ã³ããªã¸ã§ã³ãã«ã¼ã¿
- mrubyãæè¼ããã¨ãã¸ã«ã¼ã¿
æè²ç¨ãã¼ãã³ã³ãã¥ã¼ã¿
- GR-SAKURA ã«æ¶²æ¶ããã«ãè¼ãããã®
- ãã£ã¸ã«ã«ã³ã³ãã¥ã¼ãã£ã³ã°ãã§ãã
- arduino ã¨ãã³é ç½®äºæ
ã¢ã¸ã¥ã¼ã«è²ã
- mod_mruby
- Nginx
- mruby-uv
ãµã¼ãç¨éã§ã®mruby
ã¯ã©ã¤ã¢ã³ããµã¤ã
- mruby to JS converter
- llvmã使ã£ã¦ãã
- NaCl (native client)
- web browser ã§åããã®ã«åãã¦ãã
ãããã
- top levelã®å¶å¾¡ã«mrubyã使ã
ã¬ã´ ãã¤ã³ãã¹ãã¼ã
- ETããã³ã³ã§ä½¿ã£ã¦ãããã¼ã ããã
- ã¡ã¢ãªã64kBãããªãã®ã§ãã©ã¤ã³ãã¬ã¼ã¹ããã ãã§ã大å¤
- ã¡ã¢ãªã®å¢ãããã¼ã¸ã§ã³ãæè¿çºå£²ããã
MobiRuby
- iOSä¸ã§åä½ãã
Games
- ã²ã¼ã ã®ããã°ã©ã å
ã§å©ç¨ãã
- ä»ã®ã¨ãã lua ãå¤ã
- mrubyãæ¯é使ã£ã¦ã»ãã
Gree Tech Talk #2 è¡ã£ã¦ãã¾ãã
ã°ãªã¼ãã主å¬ã® Tech Talk ã«åå ãã¦ãã¾ããã
å 容ã¯ããªãã¨GitHub Enterprise(GHE) ã®ãã¨ã ãã«çµã£ã¦ç±ãèªãã¤ãã³ãã§ããGHEã¯æ¥æ¬ã§ã¯ãã¤ãã¼ã ã¨æãããæ¬ã¤ãã³ãã«ã¯è»½ã300人以ä¸ãéã¾ã£ã¦ãã¾ããã
çºè¡¨ãèããææ³
ä¸è¨ã§è¨ãã°ãGHEãå°å
¥ããä¼ç¤¾ã¯GitHubã®åªããã³ã©ãã¬ã¼ã·ã§ã³æ©è½ã®æ©æµã享åã§ãã¦ããåé¢ãéç¨ã³ã¹ãã大ããããã£ã¦ããå°è±¡ãæã¡ã¾ãããGHEèªä½ã®ã©ã¤ã»ã³ã¹è²»ç¨ã¯ä¸äººæç®ã ã¨USD20 / æ ç¨åº¦ãªã®ã§é«ãããã¨ããããã§ããªãã®ã§ãããGHEãéç¨ããããã«ã¯ãã©ã¤ãã¼ãã¯ã©ã¦ããéç¨ãã(VMWare)å¿
è¦ãããã¾ããã¤ã¾ããGHEãå°å
¥ã§ããä¼ç¤¾ã¯ãIaaSãä½ã³ã¹ãã§å®å®éç¨ã§ããä¼ç¤¾ã«éãããã¨èãããã¾ãã
ã§ãããã£ã¦ããæ¢ã«ãã©ã¤ãã¼ãã¯ã©ã¦ã(IaaS)ãå°å
¥æ¸ã¿ã®ããããªãã«è¦æ¨¡ã®å¤§ããªä¼ç¤¾ã«éããã¾ãããã¨ãããã¨ã«ãªã£ã¡ããã¾ãã ;(
GHEã¢ãã©ã¤ã¢ã³ã¹æ¬²ããã§ã
ããç¨å¤§è¦æ¨¡ãªä¼æ¥ã§ã¯ãªãããã©GHEãå°å ¥ããã人ãã¡ã¯ã©ããããããã®ã ãããã¨ããã®ãå¦æ³ãã¦ã¿ã¾ããã
- GHEã¢ãã©ã¤ã¢ã³ã¹(ã®ãµã¼ãã¹)ã使ã
- GHEãäºãã¤ã³ã¹ãã¼ã«ããããµã¼ããã¨ã³ãã¦ã¼ã¶ã«æä¾ãã
- åºæ¬çãªç£è¦æ©è½(ping, ãã«ã¹ãã§ãã¯ç)ã¯ãµã¼ãã¹äºæ¥è
å´ãæä¾ãã¦ãããã®ã§ãã¢ã©ã¼ããä¸ãã£ããããç¨åº¦ã®åãåãã¯ãã¦ããã
- ã½ããã¦ã§ã¢ã®ã¢ãããã¼ãã¯ããµã¼ãã¹äºæ¥è
ããã¾ããã§ãã£ã¦ããã
- GHEãéç¨ããéã«è¸ãã§ãããå°é·æ
å ±(?)ã¯ãµã¼ãã¹äºæ¥è
ã«éã¾ã£ã¦ããã®ã§ãåã
ã®ä¼ç¤¾ãGHEãéç¨ããããå®å®åº¦ã¯ä¸ãã
- AWS VPCã¸ã®æ¥ç¶ãªã©ããã¤ããªããã¯ã©ã¦ãã«å¯¾å¿ããããã®ãªãã·ã§ã³æ©è½ãç¨æããã¦ãã
ãã¼ãã¦ã§ã¢ã®çµ¡ããã¸ãã¹ã¯GitHub社ãææããå¯è½æ§ã¯ç¡ãã¨æãã®ã§ãå½å ã®SIå±ãããã¯ã©ã¦ãäºæ¥è çããã¸ãã¹ã¨ãã¦ææãã¦ãããã¨å¬ããã¨æãã¾ããã