SlideShare a Scribd company logo
MAKE

MONEY

MATTER.
Cloud Native Aarhus
By Kasper Nissen (@phennex), DevOps Engineer @thelunarway
MAKE

MONEY

MATTER.
Cloud Native Aarhus
By Kasper Nissen (@phennex), DevOps Engineer @thelunarway
Lunar Way
• The Partner model
• Leverage the partner banks infrastructure
• All money is in the partner bank
• Currently only in Denmark, will move to the nordics in the near future
Kasper Nissen
DevOps & Infrastructure Engineer @thelunarway
Experience
DevOps & Infrastructure Engineer @ LEGO (CITMABIS) (oursourced by
IT Minds) for 5 months
Senior/Software Engineer @ IT Minds (~4 years part time)
Master thesis: KubeCloud - A Small-Scale Tangible Cloud Computing
Environment.

Interview with Software Engineering Daily: bit.ly/2paZ5lg
Blogging about Cloud Native Tech @ www.kubecloud.io
M. Eng. Computer Technology from Aarhus University - Department of
Engineering.
B. Eng. Information and Communication Technology from Aarhus
University - School of Engineering
What do we have running?
19services
215containers
in prod
13infrastructure
services
3node rabbitmq
cluster
1rails
monolith
2100 GB
postgresql
DB’s
3kubernetes
clusters
3AWS Accounts
Where are we running?
Service overview
api
nemid
signup
goals
feeds
topup
bec-bank-nk
bec-bank-ka
credit
support
supportsystem
social
stream
insight
Service overview (with infrastructure)
api
nemid
signup
goals
feeds
topup
bec-bank-nk
bec-bank-ka
credit
support
supportsystem
prometheus
elasticsearch
pushgateway
kibana
alertmanager
fluentd
node-exporter
rabbitmq
social
stream
insight
linkerd
Infrastructure
RabbitMQ Cluster Kubernetes Cluster Elasticsearch
Cluster
AWS
PostgreSQL
database
Where are we heading?
Horses vs Unicorns
- Gene Kim
Cloud Native Utopia
Microservice oriented Container packaged Dynamically scheduled
MICROSERVICES
Why ?
• Development
• Freedom and autonomy
• Best tool for the job
• Speed
• Architecture
• Fault tolerance
• Flexibility
• Coherence, decoupling, 

encapsulation
• Deployment
• Independence
• Scalability
• Speed
• Resource utilisation
1. 2. 3.
(our Microservice vision)
How are we building our services?
Asynchronous first
Decoupling in time and space allows for autonomy
Shared dependencies
Common packages, such as logging, monitoring, communication
Each service has it’s own repository
Containing source code, deployment spec, pipeline, etc.
HTTP REQ
event
Repo
Killing our Rails monolith
… slowly strangling Rails
Rails
Rails
Languages
Challenges - so far
• Development
• Tooling - e.g. Swagger for
events?
• Local env
• Shared code
• Deployment
• Automation
• Versioning
• Architecture
• Distributed monolith
• Transparency
• Complexity
• Cross cutting concerns
• Operation
• Monitoring
• Tracing events
CONTAINERS
What?
Container
App
Runtime
OS
HOST OS
DEVELOPERS OPERATIONS
Why?
Isolation
Services are isolated and contained in their environment
Consistency in portability
The container will run in the same way in local env as in prod
Versioning
Versioning a container is easy, rolling back and forth becomes easy
Container
App
Runtime
OS
Container
App
Runtime
OS
Container
App
Runtime
OS
Container
App
Runtime
OS
Development
Container
App
Runtime
OS
Production
Container
App V1
Runtime
OS
Container
App V2
Runtime
OS
Container
App
Runtime
OS
image:v1 image:v2 image:v3
DYNAMICALLY
SCHEDULED
What?
Node Node Node
Why?
Scheduling
The scheduler will schedule your service on a node
Resource optimization
Scheduling allows for better packaging of services in hosts
Resiliency
If a node dies, the scheduler will reschedule on another node
Scalability
Scaling a dynamically cluster is easy, just add more nodes
SO,
HOW DO WE WORK
TOWARDS BECOMING

A UNICORN?
Currently used CNCF projects
Kubernetes
Container Orchestration with
Why Kubernetes?
Community
48k+ commits, 22+ GitHub stars, 1.1k contributors
Crossplatform
Multiple arcs, multiple cloud providers
Resource optimization
Packing nodes to utilize available resources
Tooling
A lot of great tools
Scaling
Great integration with auto-scaling, both
on node- and container-level
High availability
Automatic failover, redundancy
Pure Awesomeness!
It’s just awesome!
1.5 release:
Estimated 400 years of work hours
What does it do?
Node Node Node Node Node
Node Node Node Node Node
big dataapp Bapp A database
datacenter
Cluster Manager
Where does it run?
eu-west-1a
eu-west-1b
eu-west-1c
Private
Public
Services running in kubernetes
Networking
infrastructure
elb
internal
elb
api
elb
nginx-ingress linkerd route53 default-backend
Logging
es-proxy
Dev Demo
service 1 service #
…
service 1 service #
…
Monitoring
prometheus
Misc
sanity-checks
release-notifier
pushgateway
alertmanager
grafana
fluentd
kibana
node-exporter
postgresql-exporter
rabbitmq-exporter
cloudwatch-
exporter
What do we think of it?
Freedom
Squads can deploy and more or less implement
how they see fit
Autonomous services
Squads can work independent of other squads
Continuous Delivery
Kubernetes allows us to deploy multiple times
a day. It’s easy to rollback in case something
went wrong
Flexibility
We run many different type of workloads in the
cluster. Gives us mobility to become cloud
agnostic
Scalable infrastructure
Scaling the infrastructure is easy, both on
node and container level
High availability
Kubernetes takes care of container
failures, AWS Auto Scaling groups takes
care of node failures
Easy maintenance
We are using Kubernetes Operations to
help us spin up our clusters, and maintain
them.
Fluentd
Log collection with
Why fluentd?
Simple and Easy
Provides a simple interface for specifying input and output. Works great with Kubernetes and containers.
Community
Big community around fluentd, validates our choice.
Small memory footprint
Do not require a lot of resources in the cluster
Proven reliability and performance
It’s a fairly battle tested project
What does it do?
<source>
@type tail
path /var/log/containers/*.log
pos_file /var/log/containers/es-containers.log.pos
tag kubernetes.application.*
format json
time_key event_time
time_format %Y-%m-%dT%H:%M:%S.%3NZ
</source>
<filter kubernetes.application.**>
@type kubernetes_metadata
merge_json_log true
preserve_json_log false
</filter>
<match kubernetes.application.**>
type elasticsearch
host es-proxy
port 9200
include_tag_key true
logstash_format true
logstash_prefix application-
reload_on_failure true
</match>
1.
2.
3.
Logging setup
AWS Elasticsearch Cluster
fluentd aws-signing-proxy
What do we think of it?
Very easy to use
Set up is easy!
Works great with Kubernetes
Awesome plugin for adding Kubernetes metadata - making it easy to identify pods etc.
Run as a daemonset
Easy to run in every node of the cluster as a daemonset
Prometheus
Monitoring with
Alertmanager
Grafana
Prometheus
Pushgateway
short-lived jobs
long-lived jobs
scrapes
What?
What does it do?
Multi-dimensional data model
Time series identified by metric name and key/value pairs
Flexible query language
Comes with a builtin query language for al kinds of operations, sums, averages, increase, rate, etc.
Easy and simple
Easy to setup, and works great with Kubernetes service discovery
Alerting and great integration with Grafana
Prometheus has a builtin alerting system, and Grafana provides easy integration for making
metrics visible in dashboards
Pull-based approach
Prometheus scrapes it’s targets at a regular interval
What metrics are we collecting?
Kubernetes specific metrics
Pods running, health of Kubernetes system components, etc.
RabbitMQ
Activity in queues, unacknowledged messages
Nodes
CPU, Memory
Traffic
Incoming traffic, upstream latency in cluster, etc.
Containers
CPU, Memory
Application Specific metrics
Relevant metrics, instrumented by the services owners
DEMO
What do we think of it?
Provides great insights
Provides valuable insights in the state of the cluster
Makes is easy to developers to instrument their services
We provide a simple package for instrumentation, making squads able to do their own
monitoring. YOU BUILT IT, YOU RUN IT!
Grafana integrations is sweet!
Grafana and Prometheus works well together, making Grafana the interface for building dashboards
and alerts
Kubernetes <3 Prometheus
The only thing a service owner has to do in the cluster to make Prometheus scrape their services is to
add:
annotations:
prometheus.io/scrape: 'true'
gRPC
Service to service communication with
What?
gRPCserver
Service #2Service #1
gRPCclient
Protocol
buffer
proto req
proto response
What do we use it for?
It will be our default choice for synchronous calls
Synchronous service to service communication will be aligned on gRPC
Internal support system will use it to fetch data from our services
Our internal support system needs information from different services on demand, the service
will use gRPC to fetch the data
service 4
service 3
service 1
service 2
Support
Why gRPC?
Simple service definition using Protocol buffers
Simpler request handling, no need for serialization and deserialization
Binary protocol
Less overhead in communication.
Works across multiple languages and platforms
gRPC has a widespread support for multiple languages, making it a perfect fit in our current
polyglot architecture
Works great with go and the rest of the ecosystem
Docker, Kubernetes uses gRPC as long with Go. It’s a natural extension for service to service
communication. Based on many years of Google experience!
UNICORN…
Back to the
Are we there yet?
YES! and no..
We deploy multiple times a day
Deployment is autonomous, squads can deploy to production as they please.
We can easily scale to larger demands, if necessary
Scaling our infrastructure is easy
HOWEVER, doing microservices are complex!
We still need to implement better tracing, using the CNCF project OpenTracing and Zipkin
We need more insights and smarter routing in our service to service communication, we will be
using linkerd.
We can tolerate AZ failures to some extend
Our services are spread across availability zones
DO YOU HAVE ANY QUESTIONS?
Last thing
Thank you for listening!
That was it for me!
If you wanna know more, send me a message in the Cloud Native DK Slack Community.
Remember to sign up at: https://cloudnative-dk.herokuapp.com/
Catch me on Twitter @phennex
I will be speaking again:

• CoDe:U - Continuous Delivery Users Århus (June 20th in INCUBA, Åbogade 15, Aarhus N)
• Link: https://www.meetup.com/CoDe-U-AROS/events/239847862/ 

• GOTOCon Copenhagen - October 1st
• Link: https://gotocph.com/2017/sessions/237

More Related Content

PDF
Container orchestration on_aws
PDF
Kubernetes Kops - Automation Night
PDF
Two Years In Production With Kubernetes - An Experience Report
PDF
Should developers care about dockerfiles and kubernetes resources
PDF
Cloud native aarhus #5
PDF
Aws + kubernetes = ❤︎
PDF
Kubernetes Operations (KOPS)
PDF
KubeCon EU 2016 Keynote: Kubernetes State of the Union
Container orchestration on_aws
Kubernetes Kops - Automation Night
Two Years In Production With Kubernetes - An Experience Report
Should developers care about dockerfiles and kubernetes resources
Cloud native aarhus #5
Aws + kubernetes = ❤︎
Kubernetes Operations (KOPS)
KubeCon EU 2016 Keynote: Kubernetes State of the Union

What's hot (20)

PPTX
DevOps with Azure, Kubernetes, and Helm Webinar
PPTX
Managing Docker Containers In A Cluster - Introducing Kubernetes
PPTX
Serverless on Kubernetes
PDF
Kubernetes on AWS gone wild
PDF
"On-premises" FaaS on Kubernetes
PDF
Zero downtime deployment of micro-services with Kubernetes
PDF
Effective Building your Platform with Kubernetes == Keep it Simple
PPTX
CI Implementation with Kubernetes at LivePerson by Saar Demri
PDF
Autoscaling Kubernetes
PDF
How to Live in a Post-Spring-Cloud-Netflix World - Olga Maciaszek-Sharma & Ja...
PDF
Git deep dive – chopping Kubernetes
PDF
What's Cooking in the Cloud?
PDF
Using source code management patterns to configure and secure your Kubernetes...
PDF
Continuous Deployment with Jenkins on Kubernetes
PDF
Kubernetes on AWS
PDF
Cloud native - CI/CD
PPTX
PuppetConf 2016: Scaling Puppet on AWS ECS with Terraform and Docker – Maxime...
PPTX
Kubernetes @ Nanit by Chen Fisher
PDF
Kubernetes best practices
PPTX
Kubernetes in Highly Restrictive Environments
DevOps with Azure, Kubernetes, and Helm Webinar
Managing Docker Containers In A Cluster - Introducing Kubernetes
Serverless on Kubernetes
Kubernetes on AWS gone wild
"On-premises" FaaS on Kubernetes
Zero downtime deployment of micro-services with Kubernetes
Effective Building your Platform with Kubernetes == Keep it Simple
CI Implementation with Kubernetes at LivePerson by Saar Demri
Autoscaling Kubernetes
How to Live in a Post-Spring-Cloud-Netflix World - Olga Maciaszek-Sharma & Ja...
Git deep dive – chopping Kubernetes
What's Cooking in the Cloud?
Using source code management patterns to configure and secure your Kubernetes...
Continuous Deployment with Jenkins on Kubernetes
Kubernetes on AWS
Cloud native - CI/CD
PuppetConf 2016: Scaling Puppet on AWS ECS with Terraform and Docker – Maxime...
Kubernetes @ Nanit by Chen Fisher
Kubernetes best practices
Kubernetes in Highly Restrictive Environments
Ad

Similar to Lunar Way and the Cloud Native "stack" (20)

PDF
From CoreOS to Kubernetes and Concourse CI
PPTX
Introduction to Kubernetes
PDF
Kubernetes Architecture - beyond a black box - Part 1
PPTX
Introduction to Kubernetes
PPTX
Brief Introduction To Kubernetes
PPTX
TRAINING_ABOUT_KUBERNETES_Nguyen_Si_Nhan.pptx
PDF
Build your own private Cloud environment
PDF
DNUG46 - Build your own private Cloud environment
PDF
Cluster management with Kubernetes
PDF
Build cloud native solution using open source
PDF
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
PDF
AKS: k8s e azure
PDF
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
PPTX
Docker-N-Beyond
PPTX
Kubernetes
PDF
Clusternaut: Orchestrating  Percona XtraDB Cluster with Kubernetes
PDF
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)
PPTX
Aks: k8s e azure
PDF
Download full Managing Kubernetes operating Kubernetes clusters in the real w...
PPTX
01 - VMUGIT - Lecce 2018 - Fabio Rapposelli, VMware
From CoreOS to Kubernetes and Concourse CI
Introduction to Kubernetes
Kubernetes Architecture - beyond a black box - Part 1
Introduction to Kubernetes
Brief Introduction To Kubernetes
TRAINING_ABOUT_KUBERNETES_Nguyen_Si_Nhan.pptx
Build your own private Cloud environment
DNUG46 - Build your own private Cloud environment
Cluster management with Kubernetes
Build cloud native solution using open source
DevOps Days Boston 2017: Real-world Kubernetes for DevOps
AKS: k8s e azure
[AWS Dev Day] 실습워크샵 | Amazon EKS 핸즈온 워크샵
Docker-N-Beyond
Kubernetes
Clusternaut: Orchestrating  Percona XtraDB Cluster with Kubernetes
Monitoring Kubernetes with Prometheus (Kubernetes Ireland, 2016)
Aks: k8s e azure
Download full Managing Kubernetes operating Kubernetes clusters in the real w...
01 - VMUGIT - Lecce 2018 - Fabio Rapposelli, VMware
Ad

More from Kasper Nissen (6)

PDF
GitOps - Operation By Pull Request
PDF
Cloud Native CI/CD with GitOps
PDF
Monitoring with prometheus
PDF
IT Minds Mindblown Networking Event 2016
PDF
Google Cloud Platform and Kubernetes
PDF
Let's tak Productivity (Let's talk Apple #4)
GitOps - Operation By Pull Request
Cloud Native CI/CD with GitOps
Monitoring with prometheus
IT Minds Mindblown Networking Event 2016
Google Cloud Platform and Kubernetes
Let's tak Productivity (Let's talk Apple #4)

Recently uploaded (20)

PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
MYSQL Presentation for SQL database connectivity
PDF
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PPTX
Big Data Technologies - Introduction.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
Teaching material agriculture food technology
PDF
Modernizing your data center with Dell and AMD
PDF
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf
NewMind AI Monthly Chronicles - July 2025
breach-and-attack-simulation-cybersecurity-india-chennai-defenderrabbit-2025....
The Rise and Fall of 3GPP – Time for a Sabbatical?
[발표본] 너의 과제는 클라우드에 있어_KTDS_김동현_20250524.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
MYSQL Presentation for SQL database connectivity
GDG Cloud Iasi [PUBLIC] Florian Blaga - Unveiling the Evolution of Cybersecur...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Big Data Technologies - Introduction.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Reach Out and Touch Someone: Haptics and Empathic Computing
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Network Security Unit 5.pdf for BCA BBA.
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
cuic standard and advanced reporting.pdf
20250228 LYD VKU AI Blended-Learning.pptx
Teaching material agriculture food technology
Modernizing your data center with Dell and AMD
solutions_manual_-_materials___processing_in_manufacturing__demargo_.pdf

Lunar Way and the Cloud Native "stack"

  • 1. MAKE
 MONEY
 MATTER. Cloud Native Aarhus By Kasper Nissen (@phennex), DevOps Engineer @thelunarway
  • 2. MAKE
 MONEY
 MATTER. Cloud Native Aarhus By Kasper Nissen (@phennex), DevOps Engineer @thelunarway
  • 3. Lunar Way • The Partner model • Leverage the partner banks infrastructure • All money is in the partner bank • Currently only in Denmark, will move to the nordics in the near future
  • 4. Kasper Nissen DevOps & Infrastructure Engineer @thelunarway Experience DevOps & Infrastructure Engineer @ LEGO (CITMABIS) (oursourced by IT Minds) for 5 months Senior/Software Engineer @ IT Minds (~4 years part time) Master thesis: KubeCloud - A Small-Scale Tangible Cloud Computing Environment.
 Interview with Software Engineering Daily: bit.ly/2paZ5lg Blogging about Cloud Native Tech @ www.kubecloud.io M. Eng. Computer Technology from Aarhus University - Department of Engineering. B. Eng. Information and Communication Technology from Aarhus University - School of Engineering
  • 5. What do we have running? 19services 215containers in prod 13infrastructure services 3node rabbitmq cluster 1rails monolith 2100 GB postgresql DB’s 3kubernetes clusters 3AWS Accounts
  • 6. Where are we running?
  • 8. Service overview (with infrastructure) api nemid signup goals feeds topup bec-bank-nk bec-bank-ka credit support supportsystem prometheus elasticsearch pushgateway kibana alertmanager fluentd node-exporter rabbitmq social stream insight linkerd
  • 9. Infrastructure RabbitMQ Cluster Kubernetes Cluster Elasticsearch Cluster AWS PostgreSQL database
  • 10. Where are we heading? Horses vs Unicorns - Gene Kim
  • 11. Cloud Native Utopia Microservice oriented Container packaged Dynamically scheduled
  • 13. Why ? • Development • Freedom and autonomy • Best tool for the job • Speed • Architecture • Fault tolerance • Flexibility • Coherence, decoupling, 
 encapsulation • Deployment • Independence • Scalability • Speed • Resource utilisation 1. 2. 3. (our Microservice vision)
  • 14. How are we building our services? Asynchronous first Decoupling in time and space allows for autonomy Shared dependencies Common packages, such as logging, monitoring, communication Each service has it’s own repository Containing source code, deployment spec, pipeline, etc. HTTP REQ event Repo
  • 15. Killing our Rails monolith … slowly strangling Rails Rails Rails
  • 17. Challenges - so far • Development • Tooling - e.g. Swagger for events? • Local env • Shared code • Deployment • Automation • Versioning • Architecture • Distributed monolith • Transparency • Complexity • Cross cutting concerns • Operation • Monitoring • Tracing events
  • 20. Why? Isolation Services are isolated and contained in their environment Consistency in portability The container will run in the same way in local env as in prod Versioning Versioning a container is easy, rolling back and forth becomes easy Container App Runtime OS Container App Runtime OS Container App Runtime OS Container App Runtime OS Development Container App Runtime OS Production Container App V1 Runtime OS Container App V2 Runtime OS Container App Runtime OS image:v1 image:v2 image:v3
  • 23. Why? Scheduling The scheduler will schedule your service on a node Resource optimization Scheduling allows for better packaging of services in hosts Resiliency If a node dies, the scheduler will reschedule on another node Scalability Scaling a dynamically cluster is easy, just add more nodes
  • 24. SO, HOW DO WE WORK TOWARDS BECOMING
 A UNICORN?
  • 27. Why Kubernetes? Community 48k+ commits, 22+ GitHub stars, 1.1k contributors Crossplatform Multiple arcs, multiple cloud providers Resource optimization Packing nodes to utilize available resources Tooling A lot of great tools Scaling Great integration with auto-scaling, both on node- and container-level High availability Automatic failover, redundancy Pure Awesomeness! It’s just awesome! 1.5 release: Estimated 400 years of work hours
  • 28. What does it do? Node Node Node Node Node Node Node Node Node Node big dataapp Bapp A database datacenter Cluster Manager
  • 29. Where does it run? eu-west-1a eu-west-1b eu-west-1c Private Public
  • 30. Services running in kubernetes Networking infrastructure elb internal elb api elb nginx-ingress linkerd route53 default-backend Logging es-proxy Dev Demo service 1 service # … service 1 service # … Monitoring prometheus Misc sanity-checks release-notifier pushgateway alertmanager grafana fluentd kibana node-exporter postgresql-exporter rabbitmq-exporter cloudwatch- exporter
  • 31. What do we think of it? Freedom Squads can deploy and more or less implement how they see fit Autonomous services Squads can work independent of other squads Continuous Delivery Kubernetes allows us to deploy multiple times a day. It’s easy to rollback in case something went wrong Flexibility We run many different type of workloads in the cluster. Gives us mobility to become cloud agnostic Scalable infrastructure Scaling the infrastructure is easy, both on node and container level High availability Kubernetes takes care of container failures, AWS Auto Scaling groups takes care of node failures Easy maintenance We are using Kubernetes Operations to help us spin up our clusters, and maintain them.
  • 33. Why fluentd? Simple and Easy Provides a simple interface for specifying input and output. Works great with Kubernetes and containers. Community Big community around fluentd, validates our choice. Small memory footprint Do not require a lot of resources in the cluster Proven reliability and performance It’s a fairly battle tested project
  • 34. What does it do? <source> @type tail path /var/log/containers/*.log pos_file /var/log/containers/es-containers.log.pos tag kubernetes.application.* format json time_key event_time time_format %Y-%m-%dT%H:%M:%S.%3NZ </source> <filter kubernetes.application.**> @type kubernetes_metadata merge_json_log true preserve_json_log false </filter> <match kubernetes.application.**> type elasticsearch host es-proxy port 9200 include_tag_key true logstash_format true logstash_prefix application- reload_on_failure true </match> 1. 2. 3.
  • 35. Logging setup AWS Elasticsearch Cluster fluentd aws-signing-proxy
  • 36. What do we think of it? Very easy to use Set up is easy! Works great with Kubernetes Awesome plugin for adding Kubernetes metadata - making it easy to identify pods etc. Run as a daemonset Easy to run in every node of the cluster as a daemonset
  • 39. What does it do? Multi-dimensional data model Time series identified by metric name and key/value pairs Flexible query language Comes with a builtin query language for al kinds of operations, sums, averages, increase, rate, etc. Easy and simple Easy to setup, and works great with Kubernetes service discovery Alerting and great integration with Grafana Prometheus has a builtin alerting system, and Grafana provides easy integration for making metrics visible in dashboards Pull-based approach Prometheus scrapes it’s targets at a regular interval
  • 40. What metrics are we collecting? Kubernetes specific metrics Pods running, health of Kubernetes system components, etc. RabbitMQ Activity in queues, unacknowledged messages Nodes CPU, Memory Traffic Incoming traffic, upstream latency in cluster, etc. Containers CPU, Memory Application Specific metrics Relevant metrics, instrumented by the services owners
  • 41. DEMO
  • 42. What do we think of it? Provides great insights Provides valuable insights in the state of the cluster Makes is easy to developers to instrument their services We provide a simple package for instrumentation, making squads able to do their own monitoring. YOU BUILT IT, YOU RUN IT! Grafana integrations is sweet! Grafana and Prometheus works well together, making Grafana the interface for building dashboards and alerts Kubernetes <3 Prometheus The only thing a service owner has to do in the cluster to make Prometheus scrape their services is to add: annotations: prometheus.io/scrape: 'true'
  • 43. gRPC Service to service communication with
  • 45. What do we use it for? It will be our default choice for synchronous calls Synchronous service to service communication will be aligned on gRPC Internal support system will use it to fetch data from our services Our internal support system needs information from different services on demand, the service will use gRPC to fetch the data service 4 service 3 service 1 service 2 Support
  • 46. Why gRPC? Simple service definition using Protocol buffers Simpler request handling, no need for serialization and deserialization Binary protocol Less overhead in communication. Works across multiple languages and platforms gRPC has a widespread support for multiple languages, making it a perfect fit in our current polyglot architecture Works great with go and the rest of the ecosystem Docker, Kubernetes uses gRPC as long with Go. It’s a natural extension for service to service communication. Based on many years of Google experience!
  • 48. Are we there yet? YES! and no.. We deploy multiple times a day Deployment is autonomous, squads can deploy to production as they please. We can easily scale to larger demands, if necessary Scaling our infrastructure is easy HOWEVER, doing microservices are complex! We still need to implement better tracing, using the CNCF project OpenTracing and Zipkin We need more insights and smarter routing in our service to service communication, we will be using linkerd. We can tolerate AZ failures to some extend Our services are spread across availability zones
  • 49. DO YOU HAVE ANY QUESTIONS? Last thing
  • 50. Thank you for listening! That was it for me! If you wanna know more, send me a message in the Cloud Native DK Slack Community. Remember to sign up at: https://cloudnative-dk.herokuapp.com/ Catch me on Twitter @phennex I will be speaking again:
 • CoDe:U - Continuous Delivery Users Århus (June 20th in INCUBA, Åbogade 15, Aarhus N) • Link: https://www.meetup.com/CoDe-U-AROS/events/239847862/ 
 • GOTOCon Copenhagen - October 1st • Link: https://gotocph.com/2017/sessions/237