artem zhurbila - some ways to set up the server (highload strategy meetup lighting talk)
TRANSCRIPT
Definitions● Provisioning - a set of actions to prepare a server with
appropriate systems, data and software.● Idempotence - the property of certain operations, that
can be applied multiple times without changing the result.
● Configuration management - process for establishing and maintaining consistency of a product's attributes with its requirements throughout its life.
Servers: pets vs cattle
"When one of them gets sick, you shoot 'em in the head and replace 'em with a new one."
Ways to set up new server1. Manually2. Scripts3. Configuration management tools (Puppet, Chef, Salt, Ansible)
a. client-serverb. masterlessc. clientless
4. Imagesa. Virtual machine image (Full and paravirtualization)b. Container image (OS-level virtualization)
Immutable Server
Once you've spun up a server instance from a well-tested base image, you shouldn't run configuration management tools.
Microservices
Combinations● Partially baked Images + CM tools● Provision vanilla OS with script + containers images
○ Containers baked with shell scripts (Dockerfile)○ Containers baked with CM tools
● Fully baked OS images (soft + pre uploaded basic containers e.x. Ubuntu docker container) + containers images
PackerPacker - is an open source tool for creatingidentical machine images for multiple platformsfrom a single source configuration.
Builders: Amazon EC2 (AMI), DigitalOcean, Docker, OpenStack, VirtualBox, VMware ....Provisioners: Shell, Ansible, Chef Client/Solo, Puppet Masterless/Server, Salt.Post processors: Compress, Vagrant, Docker-push ....
If you are interested in Docker containers =)● Docker Machine - bootstrap new docker instance (VirtualBox,
Digital Ocean, Azure, Amazon EC2 ...)● Docker Swarm - controls a cluster of Docker hosts● Fig - user friendly YAML configuration of multiple containers● DockerUI - simple web application to manage your containers on
local machine● Shipyard - powerfull web app to control multiple docker machines.● CoreOS - lightweight OS based on the Linux kernel, provides
deploying of containers, together with built-in mechanisms for service discovery and configuration sharing
Artem [email protected]