
To the moon!
But first to the cloud



TechOps

Staging

Development

Production

Playground

TechOps
- Our individual accounts
- Serves as gateway for all others

Development
- Running services for local development
- mjml
- a full back-end for FE devs?
- Full Access to all developers

Staging
- For internal testing / QA
- Read-only access to all developers

Production
- The real thing
- Accessible only to admins

Playground
- For everyone
- Get your hands dirty & break things

Sandbox
Oh, we may need a Sandbox one as well
(same as production,
but with testnets and stuff)
Local
Development
bin/setup
bin/server
bin/client
bin/test(almost) Painless environment variables
config :foo, Bar,
api_key: System.get_env("FOO")config :foo, Bar,
api_key: {:system, "FOO"}defmodule Bar
defp api_key
System.get_env("FOO")
end
enddefmodule Bar
@api_key System.get_env("FOO")
endCompile-time vs Run-time
Local Production Server
Coming soon™
- Run the whole stack locally
- With docker
- For manual testing
Continuous Integration

- Build on every push
- Measure Code coverage
- Periodically run a longer test suite
- Dyalizer
- Maybe end-to-end tests?
- Maybe UI regression tests?
- Publish a production-ready Docker image
(only for master builds)
CircleCI
Services
http://mjml.dev-utrust.com
http://deriver.dev-utrust.com
http://merchants.dev-utrust.com
Standardized Log entries
{
"app_id": "mjml_webservice"
"timestamp": "2018-01-01-01:01:01",
"git_hash": "abcdefg",
"env": "production",
"type": "http",
"correlation_id": "abcdefg",
"content": { "text": "Hello, world!" }
}GET /ref
{
"app_id" => "mjml_webservice",
"git_hash" => "abcdefg"
}Debugging & healthcheck endpoint
Questions?
UTRUST
By Miguel Palhas
UTRUST
- 513