• Что учить, чтобы расти в сторону DevOps?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    DevOps расшифровывается как Development Operations.
    В повседневные задачи DevOps инженера входит управление инфраструктурой приложений (в основном веб).
    Что должен знать и уметь такой инженер - например по клику кнопкой в нужном датацентре произошел деплой приложения. DevOps должен суметь создать этот интерфейс с кнопкой и автоматизировать процесс приобретения инстанса (например в AWS), установки операционной системы и необходимых пакетов, доставки приложения на этот инстанс, прописывания всех настроек в приложении и приведение приложения в полную боевую готовность, т.е. состояние, в котором к приложению можно пускать пользователей.

    По пунктам, что нужно знать и уметь:
    • неистово учиться и гуглить
    • сетевые технологии, на уровне маршрутизации, TCP/IP, DNS, SMTP и остальных протоколов начиная с 3 уровня модели OSI
    • сетевые операционные системы (преимущественно семейства Linux) на уровне автоматизирования установки, обновления, настройки безопасности и мониторинга
    • системы виртуализации (Xen, OpenVZ) и контейнеризации (Docker, Vagrant)
    • настраивать сервера и мигрировать конфигурации, например перейти с Apache на Nginx, или с PHP на HHVM
    • Chef
    • Puppet
    • Ansible
    • Capistrano
    • VCS
    • AWS/OpWorks/CloudFormation/CodeDeploy, OpenStack
    • Munin/Logstash/Kibana и другие связки для мониторинга
    • Continuous delivery
    • Программировать на Bash, Ruby, Python, Go, Perl, уметь понимать конфиги на самых экзотических языках, например YAML
    • TDD
    • продукты hashicorp
    • автоматизировать создание и восстановление бэкапов баз данных
    • масштабировать приложения по горизонтали (настраивать балансировщики, реверс-проксирование, шардинг и репликацию в базах)
    • рассчитывать и оптимизировать издержки на поддержание инфраструктуры приложений
    • видеть будущее инфраструктуры приложения и компании, двигать инфраструктуру в это будущее


    DevOps - это хипстерный вариант программирующего сисадмина. Нужно уметь очень быстро учиться и непрерывно осваивать новые технологии. Если какая-то технология только в альфе, вы уже должны учиться уметь ею пользоваться. В момент беты вы ее уже должны обкатывать в пилотных проектах, а релиз должен автоматизированно устанавливаться в продакшене.
    Ответ написан
    13 комментариев
  • Хорошая практика для Python?

    Раньше шутка была, что тот, кто сможет прочитать Лутца, тот станет Python разработчиком, да и программистом в целом. Там идет две книги, каждая по 1200 страниц. Книги жесткие, тяжелые и читать их настоящее мучение. Но они дают просто нереальное понимание того, что такое Python, и как там вообще нужно думать.

    Лично я прочитал две этих книги за 4 месяца, по 5-6 часов чтения каждый день. После этого я уже стал адекватно понимать, что вообще нужно делать, и как это нужно делать. Дальше уже пошла практика, документация, видюшки на ютьюбе, либы и фреймы.

    Поэтому:

    Если вы знаете какой-то язык программирования (лучше всего скриптовый), то данную книгу читать в общем-то не обязательно. Она слишком фундаментальная. Если это первая книга по программированию, то читать её обязательно.

    "Вы о чем вообще, 2016 год за окном. Просто берете и пишите код." - Вы случайно не из Украинских галер, где обещают любую обезьяну обучить программированию за месяц, а в итоге учат копи-пасту и прикручиванию форм? Прежде, чем писать код и применять какие-либо решения, нужно понимать - для чего, как и почему.
    Ответ написан
    1 комментарий