Organizations of all sizes, trying to meet the expectations of clients accustomed to fast-moving online sites, can experience anxiety over all the things they need to do in order to stay relevant. They can well be confused over how to move:
- From monolithic, inflexible applications to agile, modular ones.
- From stand-alone servers to cloud computing and containers.
- From "throw it over the wall" testing and production to continuous integration and DevOps.
- From painstaking passes over log files to automated application performance monitoring.
B2W, an e-commerce company based in Latin America, made all these changes in a short time, becoming a model for the buzzwords that Silicon Valley start-ups love to toss around.
Interestingly, the big migration at B2W was driven originally by need for scalability. They had a bad Black Night five months before Black Friday weekend when their servers were overwhelmed with traffic. Ramos's team presented an overhaul plan to their C-suite and got their enthusiastic approval. "You can't just try to do an operation this size without management support," he says.
In addition to new tools, B2W moved its operations to the cloud for scalability, evolving from IaaS to PaaS. They adopted a microservices architecture. Docker allowed them to add new programming languages to their mix. Critically, they adopted new ways of working that let them roll out new software versions quickly and solve problems in 10 minutes instead of 9 hours.
In this podcast, O'Reilly editor Brian Anderson interviews Alexander Ramos, the IT Operations Manager for B2W. The conversation covers many of the cutting edge tools and practices that they adopted, and the challenges they faced along the way. Following are some of the highlights from their conversation:
What Docker is really about: a common language for developers and operations
With Docker, we have a common language with developers so they can build and run their applications on a development phase in the same environment that they would be using in production. If they want to use a different stack, they just put it inside their Docker image. With Docker, we could be not just a Java company; we could do Python, Go, PHP, and more. We could even use Clojure, which is less popular at the moment—we could put Clojure applications in production very fast without the operations team having to learn a new way of doing things.
What does “APM” (Application Performance Monitoring) really mean?
APM … is the best way to do real-time troubleshooting. We use Ruxit for not only what is happening for our applications in real time, or as close as real time as possible. With APM we can have deep insight of what happens with our code when we put it in production. How many requests are we getting on a given REST resource? How does the code perform? Which parts of the code should we optimize to get the best performance? This is all APM is about for B2W—about knowing where our real problems are and solving it on a code level.
Tips for using Docker in production
Start with small, new features on services you can integrate with your existing infrastructure. … If you have a big service that does some kind of workflow and you need to put a new step on this workflow, put it on a Docker container and plug in on your already existing workflow. Try to show how you can deploy things really fast with Docker. Try to show what you can do for quality assurance when you use the same technology for both development and production environments. These are some quick wins.
The bleeding edge: serverless architectures and unikernels
Right now, we're working on doing some experiments with serverless architecture. I see most of our aggregation stack evolving on some kind of real-time big data. One of the benefits that we got with this new platform as a service was that developers and business people alike began to see what was happening on the applications, not just from a performance perspective but from a business perspective in real time.
Unikernels offer a bright future for virtualization and containerization … Just imagine, removing the guest OS from the middle of the stack and all the performance you would get—all the security you would get—it's just amazing.