$30 off During Our Annual Pro Sale. View Details »

為何我從heroku轉戰AWS Elastic Beanstalk

blue chen
November 07, 2013
540

為何我從heroku轉戰AWS Elastic Beanstalk

blue chen

November 07, 2013
Tweet

Transcript

  1. BEANSTALK
    為何我從heroku轉戰beanstalk

    View Slide

  2. YouMeb Senior Web Developer & AngularJS.tw Guru
    I am Blue

    View Slide

  3. Html5&CSS3 AWS AngularJS NodeJS
    Sean Phil Blue Poying

    View Slide

  4. 1.⾏行銷企劃實習
    2.程式設計實習(熟js)

    View Slide

  5. 前情提要
    前情提要

    View Slide

  6. 就是因為現在⾮非常吃重視覺
    硬體架構對user來講無感.講⼀一堆技術客⼾戶也不懂
    對於Startup來說
    需要把很多精⼒力放在程式上

    View Slide

  7. Startup的處境
    1.資⾦金不多
    2.⼈人才
    3.⼈人⼒力有限.時間不多

    View Slide

  8. 當你寫好nodeJS專案時,即將要放上去了...

    View Slide

  9. 1.買⼀一台機器.網址
    3.弄好nodeJS環境
    2. DNS指好
    4. sreen -S nodejs
    while : ; do ; node app ; done

    View Slide

  10. XXX.com 上線!

    View Slide

  11. 怎麼!流量要暴了
    怎麼!程式寫錯了
    怎麼!忘了寫404 page

    View Slide

  12. 怎麼!流量要暴了
    怎麼!程式寫錯了
    怎麼!忘了寫404 page
    OK ! 來個nginx/apache + Git

    View Slide

  13. 當你有100個專案時
    每次重覆坐這些事情很

    View Slide

  14. View Slide

  15. web: node web.js
    worker: node worker.js
    Dyno 可以做
    { }
    Web Dyno
    Worker Dyno

    View Slide


  16. View Slide

  17. heroku config:set USER_NAME=blue
    process.env.USER_NAME
    var  config  =  require(path.join(__dirname,  '/',  
    'config.json'));
    會被⾃自動指向/app 底下的config.json
    環境設定⼀一定要

    View Slide

  18. {
       "port":  3000,
       "host":  "localhost",
       "controllers":  "controllers",
       "error":  {
           "format":  "{level:1}{module:3}{code:2}",
           "file":  "errors"
       },
       "logger":  {
           "level":  "debug",
           "dir":  "log",
           "filename":  "%s.log"
       },
       "packages":  {
           "sequelize":  {        
                   "db":  "yourdbname",
                   "username":  "yourusername",
                   "password":  "yourpassword",
                   "options":  {
                           "host":  "yourhost"
                   }
           },      
           "users":  {                
               "redis-­‐database":  2,
               "token-­‐expire":  604800,
               "nonce-­‐expire":  300
           }
       }
    }

    View Slide

  19. 使⽤用額外的服務:
    AddOn
    api外連
    { } AddOn可以額外呼叫worker專⾨門處理

    View Slide

  20. ⼀一年前websocket protocol....

    View Slide

  21. The WebSockets protocol is not yet supported on the Cedar stack.
    如果真的很想⽤用socket.io 要切到xhr-polling

    View Slide

  22. https://devcenter.heroku.com/articles/node-websockets
    Websocket近期⽀支援(10,2013)
    https://github.com/heroku-examples/node-ws-test

    View Slide

  23. Heroku整體架構並⾮非全盤開源
    http://www.infoq.com/cn/articles/heroku-inspiration

    View Slide

  24. 隨著架構增⼤大,我們也需要更彈性操作的需求
    AWS Elastic Beanstalk

    View Slide

  25. 會⽤用到的服務
    (像⼤大學選課)

    View Slide

  26. EC2
    ELB
    SNS
    AutoScaling
    S3
    必修
    選修
    Amazon RDS、Amazon DynamoDB、
    Amazon SimpleDB、Microsoft SQL
    Server、Oracle、IBM DB2 或 Informix
    有GUI幫你包到好.也可透過Cli去update 你的產品
    (git也可以)

    View Slide

  27. 要⽤用AWS可以先考慮從free開始
    http://aws.amazon.com/free/

    View Slide

  28. export PATH=”$PATH:/Users/blue/Desktop/html5/AWS-ElasticBeanstalk-
    CLI-2.5.1/eb/macosx/python2.7
    先安裝 Beanstalk CLI
    vim ~/.zshrc

    View Slide

  29. YourID->Security Credential-> accessKey

    View Slide

  30. 如果選ELB
    就會⽴立⾺馬開”⾄至少”2台EC2
    2)建⽴立⼀一個AMI role
    ⼀一般選(1)

    View Slide

  31. 如果要安裝其他套件 Open-ssl
    http://stackoverflow.com/questions/15460855/node-js-deployment-issue-on-
    amazon-elastic-beanstalk
    但是注意⼀一下npm install -g 的東⻄西不是在這邊設定
    mkdir .ebextensions
    vim static.config
    packages:
           yum:
                   openssl-­‐devel:  []

    View Slide

  32. “scripts”:{
     "preinstall":  "npm  i  -­‐g  youmeb-­‐cli"
    }
    但是注意⼀一下npm install -g 的東⻄西這樣設定
    vim package.json

    View Slide

  33. Beanstalk , heroku 等Paas平台共同的⼀一個缺點就是....
    每次重新push repo時,之前的檔案都會刪掉
    (除了在env以外的東⻄西)
    即便是beanstalk你可以登⼊入EC2主機去改
    依然在每次push 後即會被重設

    View Slide

  34. 其他設定
    (beanstalk 後台 Live Demo)

    View Slide

  35. ⾸首先,希望⼤大家別再相信網路上不實際的說法
    所有圖表.資料都要從官網上看才是最準確的
    http://aws.amazon.com/

    View Slide

  36. View Slide

  37. VPC常⽤用四個架構
    I. VPC with Public Subnet Only
    2. VPC with Public and Private Subnet Only
    3. VPC with Public and Private Subnet and hardware VPN
    4. VPC with Private Subnet and hardware VPN

    View Slide

  38. View Slide

  39. ⽤用VPC有個最⼤大好處是,你可以透過api去得知同VPC其他主機的位置

    View Slide

  40. 最後兩三事....
    1.Heroku 跟EC2硬體⽐比較
    2.關於價格
    3.使⽤用時機

    View Slide

  41. THANK YOU

    View Slide