Conference:March 6-8, 2017
Workshops:March 9-10, 2017
Presentation: Testing Programmable Infrastructure with Ruby
Location:
- Windsor, 5th flr.
Duration
Day of week:
- Tuesday
Level:
- Intermediate
Persona:
- DevOps Engineer
Key Takeaways
- Understand that you can - and probably should - test your programmable infrastructure!
- Learn about the benefits of testing your programmable infrastructure - tighter feedback cycle, fewer bugs, de-risking your deployments
- Understand DevOps requires taking testing seriously
Abstract
With the rise of DevOps, programmable infrastructure is reaching widespread adoption. However, although automated testing of software is becoming ever more common, the same cannot be said with testing the target deployment environment itself. With microservices making our deployments more and more complex, we can no longer afford to ignore this type of testing. This talk will take a tour through some approaches to environment infrastructure testing that we have created using Ruby, a language we feel is uniquely positioned to work with both infrastructure and testing.
Interview
I work as a QA consultant for OpenCredo, which broadly means I deal with all elements of QA with our client engagements. More specifically, I manage the automated testing of highly complex systems - microservices, highly scalable applications, automated infrastructure, big data, you name it. OpenCredo are often well ahead of the curve in adopting new technology, which means my job testing it is very interesting!
For the past 9 months, I’ve been working with a client building a cloud brokerage system - one that abstracts away the provisioning of infrastructure to our client, and allows them to swap between AWS, Azure, etc, quite easily. We’re using a modern stack of devops tools such as Terraform, Ansible, Vault to create and maintain these environments, so we’re in a great position from a dev side. It raised some interesting questions from a functional test perspective, though - if our system’s function was to create and configure infrastructure, well, how do we test that all that?
Our solution was to create a separate functional test suite of infrastructure tests, alongside all our other testing frameworks. It worked pretty well, but we noticed in the meantime that this seems a pretty rare thing to do. Which is odd, because our infrastructure is code - why on earth aren’t we also testing it? It seems that potentially we’re developing a testing blind spot.
Anyone that’s interested in programmable infrastructure, which should be anyone currently using devops practices, or trying to implement them.
It’s reasonably generalist. There are some specifics in terms of our implementation, but I don’t want to get bogged down in the details - how you test your infrastructure most likely depends upon what your infrastructure is.
They should be examining their infrastructure and develop some sort of strategy for how it should be tested. It doesn’t have to be a formal strategy - but they should consider the risks and benefits of changing their approach.
Not related to my talk, but machine learning is something that we should all be taking very seriously. Almost every tech firm can improve their current business by incorporating some level of machine learning. Uber could predict where customers might want to be picked up from. McDonalds might want to predict busier or slower hours and adjust staff hours accordingly. Tesco could predict when certain products are going to sell better, and who to sell them to. We run a machine learning bot in the OpenCredo Slack to predict foosball scores - it’s often more accurate than we are!
Similar Talks
Tracks
-
Architecting for Failure
Building fault tolerate systems that are truly resilient
-
Architectures You've Always Wondered about
QCon classic track. You know the names. Hear their lessons and challenges.
-
Modern Distributed Architectures
Migrating, deploying, and realizing modern cloud architecture.
-
Fast & Furious: Ad Serving, Finance, & Performance
Learn some of the tips and technicals of high speed, low latency systems in Ad Serving and Finance
-
Java - Performance, Patterns and Predictions
Skills embracing the evolution of Java (multi-core, cloud, modularity) and reenforcing core platform fundamentals (performance, concurrency, ubiquity).
-
Performance Mythbusting
Performance myths that need busting and the tools & techniques to get there
-
Dark Code: The Legacy/Tech Debt Dilemma
How do you evolve your code and modernize your architecture when you're stuck with part legacy code and technical debt? Lessons from the trenches.
-
Modern Learning Systems
Real world use of the latest machine learning technologies in production environments
-
Practical Cryptography & Blockchains: Beyond the Hype
Looking past the hype of blockchain technologies, alternate title: Weaselfree Cryptography & Blockchain
-
Applied JavaScript - Atomic Applications and APIs
Angular, React, Electron, Node: The hottest trends and techniques in the JavaScript space
-
Containers - State Of The Art
What is the state of the art, what's next, & other interesting questions on containers.
-
Observability Done Right: Automating Insight & Software Telemetry
Tools, practices, and methods to know what your system is doing
-
Data Engineering : Where the Rubber meets the Road in Data Science
Science does not imply engineering. Engineering tools and techniques for Data Scientists
-
Modern CS in the Real World
Applied, practical, & real-world dive into industry adoption of modern CS ideas
-
Workhorse Languages, Not Called Java
Workhorse languages not called Java.
-
Security: Lessons Learned From Being Pwned
How Attackers Think. Penetration testing techniques, exploits, toolsets, and skills of software hackers
-
Engineering Culture @{{cool_company}}
Culture, Organization Structure, Modern Agile War Stories
-
Softskills: Essential Skills for Developers
Skills for the developer in the workplace