We often employ the "build-once-run-everywhere" principle to our application binaries. Our build server builds an artifact and puts it in a repository, this same artifact is then promoted from environment to environment, from test to production, to make sure that what ends up in production is the very same thing as what we have thoroughly tested before.
Now, in a world of virtualization, what if we were to do the same thing with our complete infrastructure? In stead of just building our application and promote it from environment to environment, what if we would build a complete virtual machine image and do the same with that? Could we?
This is what immutable infrastructure is about. Boxfuse can help you get there.
3. Back in the day…
• Big up-front design
• Long development cycles
• Scary updates
4. In an agile world…
• Short iterations
• Continuous integration /
delivery / deployment
• Delivery pipe-lines
• We do it for code …
• … what about our
infrastructure?
5. The software stack
• App - Your code
• App server - Tomcat
• Runtime - JVM
• Libraries - glibc …
• OS Kernel - Linux
11. What is Boxfuse?
• Tool for implementing
immutable infrastructure
• Available since April 2015
• Founded by Axel Fontaine
(creator of Flyway)
• https://www.boxfuse.com
19. Configuration?
• Keep it to a minimum
• Embed in application
• Use environment variables for
the rest
20. Database?
• Keep persistent state out of
the image
• Hosted solutions like Amazon
RDS, Goole Cloud SQL …
• Migrate at application startup
(Flyway, Liquibase …)
21. Logs?
• View console with ‘boxfuse
logs’
• Ship logs to a central server
• Hosted solutions like Loggly,
Logentries, Papertrail …
22. Boxfuse vs. Docker
• Virtualization vs.
containerization
• Single-purpose vs. multi-
purpose
• Smaller images
• Super-easy and ready to go!
23. Summary
• Create a single immutable
unit
• Regenerate after every
change
• Promote unchanged from
environment to environment
• Do with your infrastructure
what you have been doing
with your apps