At Ambiata we have highly elastic and demanding workloads. At any one time we'll have anywhere from tens to thousands of servers, running hundreds of different software packages at different versions with different configurations. Managing this is a challenging and complex task, where we rely heavily on immutable infrastructure patterns and using Haskell to build reliable distributed management and deployment systems.
This talk will step through our use of Amazon Web Services and how we manage the configuration and lifecycle of our systems. We will pay particular attention to our continuous deployment and coordination system, where we will delve into how Haskell and functional programming helped us construct and maintain a simple and effective system, without allowing the complex domain to pollute our software. We will follow this up with a look at the lessons we've learned around system scheduling and auto-scaling and how we apply these techniques.
From this talk the audience will take away knowledge of a specific example of Haskell and functional programming techniques being used to deal with the complexity of system management and deployment in a commercial setting. The lessons learned will be widely applicable to all forms of programming and system design with the hope that the functional underpinnings of our systems provide insight for people to apply similar techniques in a wide variety of domains.