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
end
defmodule Bar
@api_key System.get_env("FOO")
end
Compile-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
- 286