Loop/Test/Stack Check

From MozillaWiki
< Loop‎ | Test
Revision as of 18:53, 21 May 2015 by Rpappalardo (talk | contribs) (add steps for production verification)
Jump to navigation Jump to search


Summary

Many of the services in the Loop ecosystem are essentially nginx servers and can be verified using similar techniques. i.e. If you've verified one service in any given environment (DEV, STAGE or PRODUCTION), in most cases, you can just change the URL and the verification process will be roughly the same.

URLS

You want these:

loop-server DEV http://loop-dev.stage.mozaws.net
STAGE http://loop.stage.mozaws.net
PRODUCTION http://loop.services.mozilla.com
loop-client DEV http://loop-webapp.dev.mozaws.net
STAGE http://call.stage.mozaws.net
PRODUCTION http://hello.firefox.com
msisdn-server DEV http://msisdn-dev.stage.mozaws.net
STAGE http://msisdn.stage.mozaws.net
http://msisdn-loadtest.stage.mozaws.net
PRODUCTION http://msisdn.services.mozilla.com

PRODUCTION deployment verification

Verifying a PRODUCTION deployment can be done in phases to reduce risk. Also, unlike DEV and STAGE environments, the PRODUCTION environment is restricted to Ops team so, verifying server version directly on server may not be possible. A few extra steps are outlined here to ensure a smooth PROD rollout.

To verify that DNS has switched from outgoing ELB to the newly-deployed one, it's a good practice to 'dig' the PROD URL both before and after DNS switch. This way, you will can verify that DNS has propagated before doing final verification.

Prior to DNS switch (and once the new PROD stack has been deployed), you can also verify the newly-spun ELB, by modifying your /etc/hosts file locally and pointing it to the IP of the incoming service. NOTE: make sure to flush your cache before proceeding or you may still be pointing to the original address.

Summary of Steps

  1. Run dig in terminal against existing PRODUCTION stack (to determine IP)
  2. Ops deploys new PRODUCTION stack
  3. Modify /etc/hosts (on your local machine) to point to IP address of new stack
  4. Flush cache
  5. Do (pre-DNS-switch) verification on incoming stack (see steps outlined below)
  6. Remove record from /etc/hosts (on your local machine)
  7. Flush cache
  8. Ops switches DNS
  9. Run dig again until IP address of PRODUCTION URL changes
  10. Now you're ready to verify the new stack! (see steps outlined below)

#toc


NOTE: Any verification on a PRODUCTION service requiring direct server access via terminal is restricted to Ops team.

loop-server

STAGE

In Terminal (on STAGE server):

STAGE STACK - PACKAGE VERSION

$ sed -n '/version/p' /data/loop-server/package.json:

"version": "0.17.7",

Open following URL in Browser: https://loop.stage.mozaws.net returns:

{
  "name": "mozilla-loop-server",
"description": "The Mozilla Loop (WebRTC App) server",
  "version": "0.17.7", 
  "homepage": "https://github.com/mozilla-services/loop-server/",
  "endpoint": "https://loop.stage.mozaws.net",
  "fakeTokBox": false,
  "fxaOAuth": true,
  "i18n": {
    "defaultLang" : "en-US", 
  "lang": "en-US" 
  }
}

Open following URL in Browser: https://loop.stage.mozaws.net/push-server-config: returns:

{
  "pushServerURI" : "wss://loop-push1.stage.mozaws.net/"
}

Open following URL in Browser: https://loop.stage.mozaws.net/__heartbeat__ returns:

{
  "storage" : true,
  "provider": true
}

In Terminal: $ curl -I https://loop.stage.mozaws.net

HTTP/1.1 200 OK
Date: Mon, 27 Apr 2015 19:58:43 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 273
Connection: keep-alive
Vary: Origin
ETag: W/"111-e944a68d"
Timestamp: 1430164723

#toc

PRODUCTION

Since direct server access is limited to Ops team, verifying that DNS has switched to a newly-deployed instance cannot be done the same way as on STAGE (where server access may be possible).


In Terminal:


"version": "0.17.7",

Open following URL in Browser: https://loop.services.mozilla.com returns:

{
  "name": "mozilla-loop-server",
"description": "The Mozilla Loop (WebRTC App) server",
  "version": "0.17.7", 
  "homepage": "https://github.com/mozilla-services/loop-server/",
  "endpoint": "https://loop.services.mozilla.com",
  "fakeTokBox": false,
  "fxaOAuth": true,
  "i18n": {
    "defaultLang" : "en-US", 
  "lang": "en-US" 
  }
}

Open following URL in Browser: https://loop.services.mozilla.com/push-server-config: returns:

{
  "pushServerURI" : "wss://loop-push1.services.mozilla.com/"
}

Open following URL in Browser: https://loop.services.mozilla.com/__heartbeat__ returns:

{
  "storage" : true,
  "provider": true
}

In Terminal: $ curl -I https://loop.services.mozilla.com

HTTP/1.1 200 OK
Date: Mon, 27 Apr 2015 19:58:43 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 273
Connection: keep-alive
Vary: Origin
ETag: W/"111-e944a68d"
Timestamp: 1430164723

#toc

loop-client

STAGE

<TBD>

#toc

PRODUCTION

<TBD>

#toc

msisdn-gateway

STAGE

<TBD>

#toc

PRODUCTION

<TBD>

#toc