34
Мы делили апельсин Александр Шостак [email protected]

Мы делили апельсин

  • Upload
    -

  • View
    445

  • Download
    3

Embed Size (px)

DESCRIPTION

Александр Шостак, технический директор eComCharge «Мы делили апельсин» Александр расскажет о системе процессинга электронных платежей. В докладе будут рассмотрены проблемы, с которыми столкнулась команда, а именно: - как одно большое приложение было разделено на несколько - какие сервисы были реализованы - какие задачи были закрыты с помощь готовых решений - как внедрить нескольких сущностей (клиентов системы) - как реализовать безотказную работу особо важных частей системы. Также будет затронут вопрос мониторинга и разворачивания систем.

Citation preview

Page 1: Мы делили апельсин

Мы делили апельсин

Александр Шостак[email protected]

Page 2: Мы делили апельсин

Платежный шлюз

Page 3: Мы делили апельсин
Page 4: Мы делили апельсин

Покупатель Продавец Банк-эквайер

Page 5: Мы делили апельсин

Процессоплаты картой

Page 6: Мы делили апельсин

Платежный шлюз beGateway

Page 7: Мы делили апельсин

Комбайн

Page 8: Мы делили апельсин

Много функционалаМного тестовДолгий деплой

Page 9: Мы делили апельсин

Два приложения

Page 10: Мы делили апельсин

delayed_job

Page 11: Мы делили апельсин

База данных

Page 12: Мы делили апельсин

solr

redis

Page 13: Мы делили апельсин

MySQL

PostgreSQL

Page 14: Мы делили апельсин

MySQL PostgreSQL

Order.!rst Order.!rst≠

Page 15: Мы делили апельсин

Failover• nginx/haproxy/...• keepalived• amazon elastic load balancer

Page 16: Мы делили апельсин

nginx

сервер приложения 1

сервер приложения 2

nginx

входящий запрос

Page 17: Мы делили апельсин

keepalived

сервер приложения 1IP 192.168.1.2

сервер приложения 2IP 192.168.1.3

сервис IP 192.168.1.1 сервис IP 192.168.1.1

входящий запрос к 192.168.1.1

Page 18: Мы делили апельсин

amazon elastic load balancer

сервер приложения 1

сервер приложения 2

ELB

входящий запрос

Page 19: Мы делили апельсин

Caphub

Page 20: Мы делили апельсин

Caphub

cap project:location:environment deploy

Page 21: Мы делили апельсин

Caphub

• в project.rb

• в environment.rb

• результат

role :app, "10.0.0.10", :primary => true

role :app, "10.0.0.20", :primary => true

role :app, "10.0.0.20", :primary => true

Page 22: Мы делили апельсин

Caphub

Page 23: Мы делили апельсин

Сервера

Page 24: Мы делили апельсин

Chef

Page 25: Мы делили апельсин

Chef

package "apache2" do action :install end

Page 26: Мы делили апельсин

Chef

package "apache2" do

  case node[:platform]  when "centos"   package_name "httpd"  when "debian","ubuntu"    package_name "apache2"   else    package_name "apache"  end

  action :install end

Page 27: Мы делили апельсин

Chef

knife ec2 server create \ -N app \ -d ubuntu12.04-apt \ -r role[app] \ -f t1.micro \ --private-ip-address 10.0.0.22 \ --server-url http://10.0.2.254:4000

Page 28: Мы делили апельсин

Chef

recipe[rvm::default_193] recipe[logrotate::wls] recipe[mysql::libmysqlclient] recipe[nginx::backend]

role[app]

Page 29: Мы делили апельсин

Мониторинг

Page 30: Мы делили апельсин

Zabbix

Page 31: Мы делили апельсин

Monit

PID changed Service delayed_job-production

" Date:        Wed, 04 Sep 2013 13:58:45" Action:      alert" Host:        delay" Description: process PID changed from 20715 to 7623

Your faithful employee, Monit

Page 32: Мы делили апельсин

OSSEC

OSSEC HIDS Notification.2013 Sep 05 10:52:14

Received From: (log) 10.0.0.200->/var/log/syslogRule: 1002 fired (level 2) -> "Unknown problem somewhere in the system."Portion of the log(s):

Sep 05 10:52:13 10.0.0.108 +0000: [Worker(delayed_job host:delay pid:7623)] 2 jobs processed at 9.4945 j/s, 1 failed

Page 33: Мы делили апельсин

Выводы

Page 34: Мы делили апельсин

Вопросы?