Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Artem Zhurbila - Some ways to set up the server (highload strategy meetup lighting talk)
1. Some ways to set up the server
Artem Zhurbila
artemzhurbilo@gmail.com
Highload Strategy Meetup
2. 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.
3. Servers: pets vs cattle
"When one of them gets sick, you shoot
'em in the head and replace 'em with a
new one."
4. Ways to set up new server
1. Manually
2. Scripts
3. Configuration management tools (Puppet, Chef, Salt, Ansible)
a. client-server
b. masterless
c. clientless
4. Images
a. Virtual machine image (Full and paravirtualization)
b. Container image (OS-level virtualization)
5. Immutable Server
Once you've spun up a server instance from a well-tested base image,
you shouldn't run configuration management tools.
7. 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
8. Packer
Packer - is an open source tool for creating
identical machine images for multiple platforms
from 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 ....
9. 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