Author: admin

  • Как ИТ-специалисту самостоятельно вести свой ФЛП

    Почему ИТ-специалисты не желают разбираться с вопросами бухгалтерского учета и налогами

    В борьбе за приверженность лучших специалистов современная ИТ-индустрия предлагает все новые и новые «плюшки». Одна из стандартных, must have «плюшек», бухгалтерское сопровождение ФЛП. Это одна из основных причин, почему ИТ-специалисты не желают разбираться с вопросами бухгалтерского учета и налогами ФЛП. Известны случаи, когда отсутствие бухгалтерского сопровождения заставляли кандидатов отказываться от оферы.

    Другая распространенная причина: все мы слышали истории знакомых и друзей, что бухгалтерский учет занимает много времени и требует личного визита в государственные учреждения.

    Несколько лет назад все было именно так. ФЛП или бухгалтеру нужно было лично идти в налоговую инспекцию. При этом уходило немало усилий, чтобы проснуться рано утром, постоять в пробках, затем выстоять очередь в кабинет специалиста, лично общаться с госслужащими и не всегда понимать, что именно им нужно от вас. Причем, если вам удалось решить вопрос с первого раза, это был успех. Обычно все действия нужно было повторять неоднократно.

    Сейчас есть возможность решать онлайн почти 90% вопросов, связанных с ФЛП-деятельностью. Все стало намного быстрее и удобнее. Онлайн возможно: открыть/закрыть ФЛП, изменить систему налогообложения (изменить группу), добавить новые КВЭДы, подать квартальные отчеты, оформить декретный отпуск для ФЛП и т.д. В эпоху информационных технологий Украина взяла курс на цифровизацию всех государственных услуг – это касается и бухгалтерского учета ФЛП. Появилось много удобных государственных сервисов, таких как:

    • Дия;
    • Кабинет налогоплательщиков ;
    • Государственный реестр физических лиц-предпринимателей (минюст) ;
    • Опендатабот и т.д.

    Финансовый учет ФЛП и налоги – это сложно и скучно. Это еще одна причина, почему ИТ-специалисты не интересуются вопросами ведения ФЛП. На самом деле, ведение учета финансов и подача отчетов происходит довольно просто. Вам необходимо разобраться и понять:

    • что такое ФЛП;
    • каковы основные пункты финансового учета ФЛП;
    • какие есть налоговые особенности (что такое упрощенная система налогообложения, ЕСВ и единый налог);
    • как выполнять требования законодательства и отслеживать изменения.

    Более подробно обо всем этом будет немного позже.

    Какие последствия для ФЛП, если отдать бухгалтерский учет на аутсорс

    Accounting support – это дополнительные расходы, и поэтому в некоторых IT-компаниях эта опция может отсутствовать. В таких случаях IT-специалисту нужно самостоятельно вести ФЛП или делегировать их бухгалтеру на аутсорс (услуги фриланса-бухгалтера обычно оплачиваются за собственные средства). Но следует помнить, что за неправильные действия ответственность несет предприниматель, а не бухгалтер.

    Самый главный риск в деятельности ФЛП – это ответственность всем своим имуществом. Если у Вас как у ФЛП есть долги перед государством или перед партнерами, возникает риск, что ваше имущество арестуют или заберут в судебном порядке. Наличие долгов может привести к аресту счетов и запрету выезда за границу.

    Я рекомендую каждому IT-специалисту хотя бы поверхностно разобраться в особенностях системы налогообложения ФЛП, чтобы быть уверенным, что бухгалтер работает корректно.

    Не мешает время от времени проверять деятельность своего бухгалтера. Вы должны знать, на какой системе налогообложения ваш ФЛП, понимать, почему именно эта группа ФЛП, каковы ее особенности, какие ставки налога на вашей группе. Также вы должны знать о существовании кабинета налогоплательщиков (это электронный кабинет налоговой), как туда зайти; знать о существовании состояния расчетов с бюджетом , где вы можете просмотреть, в каком объеме и в срок ли уплаченные налоги или своевременно увидеть, что вашему ФЛП начислен штраф/пеня/недоимка.

    Какие еще последствия могут быть для предпринимателя, если не следить за ведением ФЛП? Рассмотрим самые типичные проблемы и как их можно избежать.

    Ситуация № 1. Если вы взяли себе творческий отпуск и несколько месяцев не получали дохода на ФЛП — ошибочно думать, что не нужно подавать отчет в налоговую инспекцию или не платить налоги. Даже в отсутствие доходов предприниматель обязан подать нулевой отчет (нулевую декларацию) и уплатить ЕСВ (единый социальный взнос) — фиксированный налог, который можно уплачивать ежемесячно или 1 раз в квартал, как вам удобно. Предпринимателям следует соблюдать сроки уплаты налогов и предоставление отчетов во избежание штрафов.
    Ситуация №2.Довольно часто встречаются случаи, когда переход из одной компании в другую приходится на отчетный период. Между бухгалтерами считается хорошим тоном, чтобы предыдущая компания завершила работу с вашим ФЛП в пределах отчетного квартала. Это значит, что бухгалтерия экс-компании должны заплатить налоги и подать декларацию за отчетный период, то есть тот период, когда вы там еще работали. Документальный переход в новенькую компанию может затянуться и там могут не сходу найти незавершенную работу. В результате уплачивать налоги, штрафы и подавать отчетность придется именно вам. К примеру, вы предоставляли услуги компании Х и расторгли контракт 20 сентября. Компания Х выплатила вам финансовое вознаграждение 4 октября. В этом примере отчетный период – это третий квартал, то есть период с 01.07 до 30.09.
    Ситуация №3.Когда готовится квартальная декларация, бухгалтер обязан запросить у предпринимателя банковскую выписку со всех счетов ФЛП и учесть все поступающие вам на счета суммы. Однако у предпринимателя может быть несколько ФЛП-счетов в разных банках, и бухгалтер может об этом не знать. Часто штатные бухгалтеры пропускают этот шаг и формируют декларацию только на основании выплат от компании, где вы и бухгалтер оказываете услуги. В таком случае в декларации не будет учтен дополнительный доход из других источников. Как результат, при расхождении суммы по банковской выписке с задекларированной суммой налоговая заставит вас уплатить штраф. Поэтому рекомендуем всегда сообщать бухгалтеру обо всех финансовых поступлениях на ваши ФЛП-счета. А если вы получаете доход от нескольких источников, то рекомендуем самостоятельно сверять суммы, указанные в декларациях,
    Ситуация №4 При уплате налога с расчетного счета рекомендуем проверять счет на возможность возврата платежа. Бывают случаи, когда в платежных поручениях допускаются ошибки (неверные счета, персональные данные, назначение платежа) или у получателей изменяются платежные реквизиты. То есть вы уплатили налог, но фактически платеж «завис» между банком и налоговой или ваш платеж налоговая причислила как поступление уплаченных налогов в категорию невыясненных платежей. Это приводит к недоразумениям в части начисления штрафных санкций. Результатом этого может стать появление долгов и изменение системы налогообложения — то есть налоговая может на 1 год лишить ФЛП статус упрощенной системы налогообложения (ЕН). Например, если ФЛП перевели на общую систему налогообложения с третьего квартала, то есть с 01.07.21, сайте налоговой в  личном кабинете налогоплательщика . Эта информация находится в свободном доступе.

    Ситуации бывают разные и все кейсы не прописать. Поэтому, независимо от того, ведет ли свой ФЛП самостоятельно или делегировал это штатному бухгалтеру или на аутсорс/фриланс, предприниматель обязан знать базовые понятия о ФЛП.

    Какие базовые понятия о ФЛП должен знать каждый IT-специалист и сложно ли вести свой ФЛП самостоятельно

    Физическое лицо-предприниматель (ФЛП) – это самая простая организационно-правовая форма субъекта хозяйственной деятельности. Если совсем просто — это физическое лицо, зарегистрированное как предприниматель.

    Как вести бухгалтерский учет? Чтобы эффективно управлять финансами, нужно разобраться со следующими пунктами финансового учета ФЛП:

    • учет доходов и расходов;
    • оформление первичных документов;
    • налогообложение;
    • сроки сдачи отчетности и уплаты налогов.

    Далее расскажем все на примере ФЛП третьей группы, являющейся самой распространенной среди ИТ-специалистов благодаря ее упрощенной системе налогообложения и возможности предоставлять услуги не единиками (в том числе иностранным компаниям).

    Учет доходов и расходов

    Ведение учета доходов является обязательным для ФЛП. С 2021 года в Украине отменена регистрация книги учета доходов и расходов в налоговой. Теперь ФЛП могут вести бухгалтерский учет в произвольной форме (например, вести таблицу в excel или в традиционном формате бумажной книги/блокнота и т.п.).

    Если вы решили перейти на электронную таблицу, то не спешите избавляться от книги учета доходов. Сначала необходимо подать заявление об отмене его регистрации и затем хранить книгу в течение 3-х лет с момента окончания отчетного периода, в котором была сделана последняя запись.

    Главное условие ведения учета доходов: в свободном реестре нужно показать свои месячные обороты, соответствующие первичным документам.

    Оформление первичных документов

    Что такое первичные документы? ФЛП, предоставляющий услуги и получающий оплату в безналичной форме, должен иметь следующие документы:

    • банковскую выписку;
    • договор с компанией, которой вы предоставляете услуги как ФЛП, подписанный двумя сторонами;
    • счет-фактуру за выполненные работы (этот документ еще называют инвойс).

    Первичные документы должны быть связаны с каждым контрагентом. Их следует хранить в течение трех лет на случай налоговой проверки. Если контролирующие органы не увидят первичные документы о происхождении средств, это может стать основанием для перехода на общую систему «задним» числом.

    Налогообложение

    Упрощенная система налогообложения – одно из основных преимуществ избрания ФЛП третьей группы. На упрощенной системе налогообложения следует платить единый налог и ЕСВ.

    Единый налог – это налог, уплачиваемый субъектами хозяйственной деятельности на упрощенной системе налогообложения. Для ИТ-специалиста обычно это 5% от дохода, при условии, что предприниматель не платит НДС.

    Единый социальный взнос (ЕСВ) – это консолидированный страховой взнос в Украине, сбор которого осуществляется в обязательном порядке и на регулярной основе. ЕСВ дает право предпринимателю на получение больничных, декретных выплат и соцпомощи, а также государственной пенсии. ЕСВ – это налог с фиксированной суммой, 22% от минимальной заработной платы.

    Сроки сдачи отчетности и уплаты налогов

    ФЛП 3-й группы Периодичность Сроки сдачи отчетности и уплаты налогов
    ЕСВ-налог платит ежеквартально к  20-му числу месяца следующего за кварталом
    Налоговая декларация подает ежеквартально в течение 40 календарных дней после окончания отчетного квартала
    Единый налог платит ежеквартально в течение 50 календарных дней после окончания отчетного квартала

    Оплачивать налоги и подавать отчеты можно онлайн в личном кабинете налогоплательщика – это бесплатно. Предпринимателям следует соблюдать сроки уплаты налогов и предоставление отчетов во избежание штрафов.

    ФЛП 3-й группы – ключевые моменты
    Лимит дохода в год

    (с 01.01.2022 по 31.12.2022)

    7 млн. 585,5 тыс. грн.
    Единый налог (ЕП) 5% от дохода для неплательщиков НДС

    3% от дохода для плательщиков НДС

    ЕСВ С 1 января 2022 г. уплата ЕСВ = 1430,0 грн./мес

    4290 грн за  1-3 квартал 2022 года

    С 1 октября 2022 г. уплата ЕСВ = 1474,0 грн./мес

    4422 грн за 4 квартал 2022 года

    Контрагенты и клиенты На ФЛП-счет ФЛП можно получать от:

    – обычного физлица;

    – плательщики единого налога;

    – ФЛП и юрлица на общей системе;

    – иностранных компаний и физлиц.

    Получать доход можно в гривне и валюте.

    Виды деятельности Все виды деятельности, кроме 291.5 НКУ
    КВЭДы для ИТ-специалистов 58.21 Издание компьютерных игр

    58.29 Издание другого программного обеспечения

    62.01 Компьютерное программирование

    62.02 Консультирование по вопросам информатизации

    62.09 Другая деятельность в сфере информационных технологий и компьютерных систем

    63.11 Обработка данных, размещение информации на веб-узлах

    63.12 Веб-порталы

    63.99 Предоставление других информационных услуг

    70.22 Консультирование по вопросам коммерческой деятельности и управления

    74.10 Специализированная деятельность по дизайну

    Кроме своевременной уплаты налогов и предоставления отчетности, ФЛП должен следить за объемом годового заработка (предел дохода на год). Если вы превысили лимит, необходимо перейти на общую систему налогообложения с  1 числа следующего за отчетным кварталом месяца и уплатить 15% ЕН от суммы превышения. Или налоговая сделает это за вас и исключит ваш ФЛП из реестра плательщиков единого налога. Возвратиться на упрощенную систему налогообложения можно будет только со следующего календарного года.

    Обратите внимание! Мало кто знает, что после закрытия ФЛП повторно открыть ФЛП на упрощенной системе можно будет только с началом следующего календарного года — то есть с 1 января следующего года. Бывали случаи, когда по опрометчивости специалисты закрывали свой ФЛП в начале года и затем сталкивались с проблемой повторного открытия ФЛП.

    Итак, в ведении ФЛП нет ничего тяжелого. Разобравшись во всех нюансах, каждый может заниматься этим самостоятельно.

    Какие инструменты необходимы для самостоятельного ведения ФЛП

    Название Описание
    Ключ КЭП

    (квалифицированная электронная подпись)

    КЭП обеспечивает целостность документов и идентифицирует личность.

    С помощью электронной подписи можно подписывать электронные документы, регистрироваться на государственных порталах, пользоваться электронными услугами.

    Документы с этой подписью имеют такую ​​же юридическую силу, как и документы, подписанные собственноручно.

    Получить ключ КЭП можно как офлайн, так и онлайн.

    Если вы клиент ПриватБанка – то можете бесплатно сгенерировать ключ КЭП через личный кабинет.

    Также можно получить электронную подпись от “Дия”.

    Сервис Действие позволяет удаленно зарегистрировать или закрыть ФЛП, внести изменения (добавить новый КВЭД).
    Реестр плательщиков единого налога Это государственный сайт , который поможет проверить, находится ли ваш ФЛП в Реестре плательщиков единого налога (т.е. на упрощенной системе налогообложения).

    Вы можете сделать бесплатный запрос – для этого нужно ввести только ваш Налоговый номер (указывать ФИО не нужно) и нажать кнопку [поиск].

    Обязательно обращайте внимание на поле «Дата исключения из реестра» — если напротив этого поля есть дата — ваш ФЛП уже находится на общей системе налогообложения.

    Общая система означает, что теперь вы должны платить налог 18% НДФЛ + 1,5% военный сбор + ЕСВ 22% чистого дохода, вместо 5% единого налога. Также другая система отчетности и другие сроки уплаты налогов.

    Рекомендуем регулярно проверять, что ваш ФЛП находится в Реестре плательщиков единого налога, чтобы избежать неприятных сюрпризов.

    Электронный кабинет налогоплательщиков Позволяет отдаленно сдать отчеты и пересмотреть предыдущую отчетность, проверить наличие долгов, своевременность принятия отчетов и вести переписку с налоговой службой.

    Особое внимание обращайте на начисление долговых обязательств и своевременность принятия отчетов.

    Учет доходов ФЛП Электронная таблица.
  • Заливаем веб-приложение на CDN от AWS

    Заливаем веб-приложение на CDN от AWS

    В этой статье хочу кратко рассказать о том, как захостить свою веб-аппликацию на CDN от Amazon. Это может быть интересно всем, кто хочет улучшить доступ к своему ресурсу, а именно ускорить загрузку статического контента пользователями.

    Часто оптимальным решением является использование сети Распространения Контента (CDN). Статическим контентом здесь может быть как побеленная JavaScript Аппликация (React или Angular), так и изображение или статический HTML. В этой статье будем оперировать AWS S3 (для хранения и хостинга), CloudFront (как CDN) и функционалом DNS-провайдера (может быть любой), в нашем случае это CloudFlare. Будем использовать TLS/SSL сертификат от Cloudflare для того, чтобы ресурс работал на HTTPS (с поддержкой Cloudflare «Full Strict» режима).

    Задача кажется простой и много ресурсов по освещению подобного, однако, как оказалось, есть много подводных камней, и аналогичный контент часто устаревший.

    Здесь не будем рассматривать создание и билд JS аппликации, создание S3 бакета (или «ведра» на украинском языке), заливку контента в бакет или регистрации DNS-домена.

    HTTP на S3

    Итак, создаем S3 бакет и заливаем сбилденный код туда, в корень. Однако здесь есть нюанс – ограничение от Amazon: бакет должен иметь имя такое же, как домен (поддомен). К примеру,
    если планируется разместить билд на домене my . react-app . com, то и название бакета должно быть my . react-app . com.

    Далее в свойствах бакета (вкладка Properties) следует включить Static website hosting. Ниже, в поле Index Document, необходимо указать index файл (index.html обычно).

    Сохраняем настройки и переходим к вкладке доступа (Permissions).

    Здесь нам нужно отключить блокировку доступов, если она активна (Block public access).

    В Bucket Policy (Политика доступа) нам нужно предоставить доступ для CloudFront. Чтобы упростить задачу, предоставим доступ ко всем сервисам AWS (потом это можно перенастроить).

    В поле для JSON нужно скопировать следующее:

     { 
        "Version" :  "2012-10-17" , 
        "Id" :  "Policy1638279142165" , 
        "Statement" :  [ 
            { 
                "Sid" :  "Statement1" , 
                "Effect" :  "Allow" , 
                "Principal" :  { 
                    "AWS " :  "*" 
                } , 
                "Action" :  "s3:GetObject" , 
                "Resource" :  "arn:aws:s3:::my.react-app.com/*" 
            } 
        ] 
    }
    

    где в строке “Resource”: “arn:aws:s3:::my” . react-app . com/*»
    « my . react-app . com» нужно заменить именем этого бакета.

    Сохраняем настройки и стараемся получить доступ к аппликации через HTTP. Для этого на вкладке свойств бакета (Properties) в поле Static website hosting переходим по ссылке, указанной под пунктом «Bucket website endpoint».

    На этом этапе мы должны иметь доступ к нашему ресурсу под сгенерированным доменом через HTTP. Если с этим возникли проблемы, то следует попытаться пройтись по предварительным настройкам еще раз, прежде чем двигаться дальше.

    SSL/TLS сертификат

    Чтобы ресурс работал через HTTPS, нужно использовать сертификат, сгенерированный для требуемого домена. Если на AWS уже есть сертификат (например, если домен на Route 53), этот шаг можно пропустить.

    Для менеджмента сертификатов в AWS есть сервис Certificate Manager (ACM). Заходим туда и выбираем опцию запроса сертификата (Request certificate). Далее выбираем опцию публичного сертификата (Request a public certificate).

    Здесь есть первый нюанс: для того чтобы сертификат можно было использовать в Cloudfront, его нужно добавлять именно в зоне доступности «N.Virginia» (us-east-1), что совсем не интуитивно.

    Там заполняем название домена:

    И способ валидации:

    Выбираем DNS-валидацию, ведь именно этот способ рекомендован. Нажмите Request, чтобы создать запрос на получение сертификата.

    После этого сертификат появится в списке сертификатов со статусом «Ожидающий валидации» (Pending validation). Чтобы валидировать его, нужно создать DNS-запись согласно сгенерированным значениям:

    Мы подтвердили принадлежность текущего ресурса к указанному домену (а значит и сертификату).

    Итак, добавляем соответствующую CNAME запись в DNS (в нашем случае в Cloudflare):

    Через некоторое время наш сертификат будет валидирован и получит статус «Issued».

    Cloudfront

    Cloudfront – это CDN сервис от Amazon, который с помощью глобально распределенных прокси-серверов кэширует контент, у нас – составляющие аппликации. Поэтому нам нужно настроить дистрибутив для распределения с источником данных в созданное S3 ведро (bucket).

    В Distributions выбираем Create и заполняем Origin domain.

    Здесь еще один совсем не интуитивный момент: когда мы будем вводить название бакета, нам подтянется наш S3 ресурс. Однако это не то, что нам нужно.
    В это поле нужно вставить URL, по которому мы раньше через HTTP имели доступ к нашему бакету. Чтобы его получить, идем в «Свойства» нашего бакета (Bucket Properties) и копируем адрес с поля website endpoint. Вставляем его без http:// и без слеша в конце.

    К примеру, в нашем случае, в поле Origin domain при создании дистрибутива у нас будет подсказка:

    « my . react-app . com . s3 . amazonaws . com » (заканчивается «s3 . amazonaws . com»)

    а нужно:
    « my . react-app . com . s3-website-eu-west-1 . amazonaws . com»

    Далее ищем поле Alternate domain name . Здесь нужно указать домен (название бакета), например my . react-app . com .

    И выбрать созданный сертификат.

    Все остальные поля оставляем без изменений и создаем дистрибутив.

    Сначала дистрибутив получит статус deploying, и когда станет готовым к использованию, статус изменится на Enabled.

    На этом этапе наш ресурс должен быть доступен через нужный HTTPS на CDN Amazon. Чтобы убедиться в этом, нужно перейти на URL, указанный в деталях нового дистрибутива:

    Финальный штрих

    Теперь, чтобы данная аппликация работала под нашим доменом, нужно создать соответствующую DNS запись, в которой мы впишем, что за контентом для указанного домена следует обратиться к настроенному выше дистрибутиву Cloudfront ( Distribution domain name ). Поскольку дистрибутив доступен по URL, используем ту же запись CNAME.

    Чтобы DNS запись вступила в действие, нужно определенное время.

    DNS-провайдер Cloudflare

    Если все прошло хорошо, и все остальные DNS записи отвечают требованиям end-to-end HTTPS шифрования, можно включить режим «Full (strict)».

    Index файл не найден

    Если на каком-то этапе вместо приложения открывается XML с перечнем файлов в ведре, то вероятно, что cloudfront не знает, какой индекс файл использовать. Чтобы исправить это, можно настроить путь к индексу файла (Origin path) в Cloudfront дистрибутиве.

  • Java Apache Log4j обнаружили новую Zero-day уязвимость

    Самый большой факап в Джаве мире за последние 10 лет» — в Java Apache Log4j обнаружили новую Zero-day уязвимость
    В популярной среди разработчиков библиотеке логирования Java Apache Log4j обнаружили уязвимость нулевого дня, которая легко эксплуатируется и позволяет злоумышленникам получить полный контроль над уязвимыми серверами. Об этом  сообщает LunaSec.

    Что известно о новой уязвимости

    «На днях произошел самый большой факап в Джаве мире за последние 10 лет? Уж очень скоро десятки тысяч серверов не выйдут онлайн. Наши серверы уже просканили с десяток сканеров», — написал соучредитель компании Blynk Дмитрий Думанский в  Facebook .

    В частности, эксплойт CVE-2021-44228 классифицируют как серьезный и назвали «Log4Shell». Он позволяет выполнять удаленный код без проверки подлинности (RCE) путем регистрации определенной строки, поскольку пользователь, запускающий приложение, использует библиотеку логирования Java.

    Кто пострадал

    Уязвимость затронула все системы и службы, использующие библиотеку логирования Java, Apache Log4j между версиями 2.0 и 2.14.1, включая многие службы и приложения, написанные на Java. 

    Также к этому эксплойту уязвимы многие различные сервисы: облачные сервисы, такие как Steam, Apple iCloud и программы, такие как Minecraft. В общем, любой, кто использует Apache Struts, может быть уязвимым.

    К тому же было показано , что простое изменение имени iPhone вызывает уязвимость на серверах Apple.

    Впоследствии стало известно, что версии JDK, позднее  6u2117u2018u191 и 11.0.1, не подвергаются воздействию вектора атаки LDAP. В этих версиях com.sun.jndi.ldap.object.trustURLCodebaseустановлено значение false, т.е. JNDI не может загружать удаленный код с помощью LDAP.

    Как фиксить проблему

    Между тем многие проекты с открытым кодом, например сервер Minecraft, Paper, уже начали исправлять использование log4j2.

    Временный фикс: JAVA_OPTS="-Dlog4j.formatMsgNoLookups=true"или обновить версии Log4j до log4j-2.15.0-rc1. Однако уже найден способ обходить защиту, добавленную в выпуске log4j-2.15.0-rc1.

    В то же время предложено новое обновление log4j-2.15.0-rc2 с полной защитой от уязвимости. В коде выделяется изменение, связанное с отсутствием аварийного завершения при использовании некорректно оформленного JNDI URL.

    Тем не менее, существуют другие направления атаки, направленные на эту уязвимость, что может привести к RCE. Злоумышленник все еще может использовать существующий код на сервере для выполнения кода.

    Ранее международная компания решений для облачной безопасности Wiz выявила серьезную уязвимость в Microsoft Azure, затрагивающей виртуальные машины Linux .

    Перед этим компания Apple выпустила набор новых обновлений для iOS, macOS и watchOS, чтобы исправить ошибку , которая, как считают исследователи безопасности Citizen Lab, скорее всего, позволила правительственным учреждениям устанавливать шпионские программы на телефоны журналистов, адвокатов и активистов.

  • Архитектура в AWS. Какие ошибки мы допустили

    Перевод статьи Руслана Кусова, Senior Solutions Architect в SoftServe. Работа над ошибками помогает сформулировать выводы и избежать подобного в будущем. Надеюсь, наш опыт поможет еще кому-нибудь.

    Как-то один мой сотрудник сказал: «Это не такая уж проблема. К счастью, мы не строим самолеты». Я бы здесь не был так уверен. Некоторые архитекторы, особенно начинающие, не отдают себе отчет в последствиях своих ошибок. Ошибки бывают более масштабными, чем кажется. Простейший пример – угроза похищения данных, которое может привести к значительным финансовым потерям и репутационным рискам.

    В этой статье поделюсь с вами четырьмя историями из жизни. Это «изученные уроки», укрепившие фундамент архитектурного опыта моей команды.

    Случай №1. Несогласованный план хуже, чем его отсутствие

    Задача – перенести инфраструктуру крупной энтерпрайз-компании в AWS из другого облачного провайдера. Для нашей команды это стандартная вещь без очевидных вызовов. Ввиду большого количества данных, систем и компонентов у клиента важно было подготовить правильный фундамент — landing zone. Это не проблема, поскольку AWS имеет готовый концепт для этого.

    Стейкхолдеры (спонсоры миграции) на стороне клиента хорошо понимали принципы AWS landing zone, они согласились со всеми нашими предложениями, отметив лишь то, что у них теоретически может быть VPN с дата-центром и есть SD-WAN, который желательно будет настроить в будущем, но сейчас это не важно, кроме того, этим будем заниматься не мы, а их инженерная команда. В общем, условия были привлекательными: свобода выбора, «правильные» стейкхолдеры и обещанная поддержка инженеров со стороны клиента.

    Мы поняли, что оптимально будет использовать AWS CloudFormation для развертывания ресурсов, потому что он проще, в том числе и для централизованного управления AWS облака. Все должно быть хорошо, но…

    Что пошло не по плану

    Проблемы возникли уже на первой неделе. Мы построили landing zone и были готовы переходить к финальному этапу, когда оказалось, что нам все-таки нужно настроить SD-WAN и сделать так, чтобы через него можно было собирать данные из отдаленных центров. И это вообще главный критерий успеха проекта. Это стало первым тревожным звоночком.

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

    Почти на каждом этапе работы мы сталкивались с необходимостью получать согласование от новых стейкхолдеров, с которыми вообще не контактировали и о чьем существовании даже не догадывались. Хотя нас уверяли, что все нужные стейкхолдеры присутствовали на первой встрече.

    В конце концов, мы настроили SD-WAN, создали концепт централизованного сетевого аккаунта и VPC под каждого SD-WAN вендора и даже получили данные из удаленных дата-центров. В этом случае клиент сообщил о появлении очередных новых стейкхолдеров.

    Выяснилось, что получение данных – критерий только операционной команды, а у нее есть еще внутренние клиенты, на базе ее продуктов разрабатывающие свои решения. И эти стейкхолдеры не могут пользоваться AWS-инфраструктурой и всей организацией в нынешнем виде, потому что, во-первых, структура аккаунтов не соответствует их модели, а во-вторых, они пользуются Terraform, а не AWS CloudFormation, и хотят передавать его операционной команде на поддержку. Это означало, что для нас проект значительно усложняется, потому что возникает еще один инструмент, под который нужно полностью подстроить продукт. В конце концов, нам пришлось создать дизайн AWS landing zone 2.0 — несовместимый с предыдущей версией — с многочисленными кардинальными изменениями и дополнительными рисками, связанными с миграцией на эту версию 2.0.

    Чему мы научились

    Вот какие выводы я сделал из этого непростого опыта:

    • На первой же встрече нужно задавать как можно больше вопросов, чтобы максимально все прояснить и убедиться в том, что стейкхолдеры понимают, о чем идет речь.
    • Важно выяснить все о своих стейкхолдерах и их конечных пользователях, а также убедиться, что вы задаете вопрос именно тем, кто должен на них отвечать. Определить проектных спонсоров, отвечающих за конечный результат и успех проекта.
    • Надо проговаривать все до мельчайших деталей – то, что для вас очевидно, может быть не так ясно для клиента, особенно если он вовлечен не во все аспекты работы над продуктом.
    • При малейших сомнениях следует аргументированно настаивать на дополнительных встречах и обсуждениях дизайна. Согласования все равно не избежать – это рабочий процесс, но таким образом вы спасете себя от излишней работы и стресса из-за проблем в коммуникации.

    Случай №2. Everybody lies

    На первый взгляд этот клиент казался настоящим экспертом: утверждал, что хорошо осведомлен с технологиями, которые мы внедряли, что имеет сертифицированных архитекторов AWS-cloud и AWS-девелоперов и использует best practices от Amazon Web Services, а также убеждал, что у него все на 100% правильно настроены. Все по AWS Well-Architected Framework.

    Клиент обратился к нам, когда подсчитал, что много платит за использование инфраструктуры AWS (это было в мае 2020-го, когда большинство компаний были в режиме жесткой экономии и стали более тщательно контролировать расходы).

    Заказчик утверждал, что его инфраструктура оптимизирована, в компании используют механизмы контроля расходов, reserved instances, утилизация есть. То есть все как следует, но при этом на поддержку инфраструктуры тратятся миллионы долларов в год.

    На тот момент мы для них выполняли работу, связанную только с одним из их приложений, в AWS инфраструктуру доступа у нас не было и все, что оставалось — поверить им на слово.

    В общем есть два пути решения такой проблемы:

    • Cost cut — урезание затрат путем отказа от определенных сервисов, влияющих на характеристики качества системы (безопасность, масштабирование, отказоустойчивость и т.п.).
    • Cost optimization – оптимизация имеющихся ресурсов, чтобы сохранить все желаемые характеристики качества системы.

    Клиент решил выбрать третий – переехать на облако другого провайдера, предложившего привлекательные скидки на начальном этапе. Понимая, что это неправильный путь, который в долгосрочной перспективе только усугубит проблему, мы попросили провести небольшой анализ, чтобы понять, на что идут средства и ресурсы. Когда наша команда пообщалась с архитектором на стороне клиента, оказалось, что он не так уверен в правильной работе системы, как нам заявляли сначала. И не зря.

    Вот список проблем, которые мы выявили:

    • технический долг, возникший при переходе в AWS-облако из дата-центра по принципу lift&shift без адаптации инфраструктуры;
    • отсутствие облачной модели расходов;
    • отсутствие контроля над расходами в облаке и нормального планирования;
    • отсутствие контроля за используемыми ресурсами и сервисами;
    • не внедрены best practices и базовые конфигурации безопасности и ограничений — исследовав отчеты по использованию reserved instances, мы выяснили, что в начале они выбрали и приобрели предыдущее поколение виртуальных машин (EC4), но в какой-то момент команда разработчиков решила, что лучше подходит C5 поколение виртуальных машин (т.е. они дважды платили за одно и то же);
    • плохая внутренняя коммуникация;
    • плохая документация: банально не было документировано, какие ресурсы они купили, а какие используют по факту.

    Однако топ менеджмент уже принял решение переходить на другое облако, даже несмотря на наши расчеты. Буквально в начале марта этого года мы получили от них запрос на оптимизацию, поскольку они увидели, что в новом облаке экономят только из-за скидки, которую им предоставил провайдер, и как только она закончится, все вернется к тому уровню, на котором и было.

    Чему мы научились

    Из этого кейса я извлек три основных урока:

    • не стоит полностью полагаться на информацию, которую предоставляют клиенты — даже если они не имеют цели скрыть, они могут не понимать, какие данные для нас важны и нечаянно пропустить ключевые детали;
    • начинать коммуникацию с клиентом и предлагать решение потенциальных или уже имеющихся проблем нужно как можно раньше, не ждать, пока клиент захочет мигрировать в другой cloud-сервис. А для этого важно своевременно оценить ситуацию;
    • необходимо сразу же находить правильных стейкхолдеров, чтобы как можно быстрее и в полном объеме получать нужную информацию.

    Случай №3. Kubernetes как серебряный шар

    Среди некоторых инженеров есть тенденция любую проблему решать использованием самых трендовых технологий, таких как Kubernetes. Этот кейс о том, что подобный подход срабатывает не всегда.

    Наш клиент – платежный сервис, работавший по модели классического телефонного контакт-центра. Они обратились к нам с запросом разработать совершенно новый сервис – интернет-платформу для онлайн-платежей. Они желали полноценно держать свою инфраструктуру в облаке AWS, но вместе с тем хотели сделать ее облачно независимой для будущих нужд (новые клиенты, региональные рынки и т.д.). Никаких ограничений в технологиях не было.

    Клиент привык к использованию виртуальных машин с другими своими продуктами, но мы провели воркшоп для стейкхолдеров, чтобы объяснить преимущества микросервисной архитектуры и контейнеров и склонили клиента на их сторону. На этом этапе все было хорошо. Пока мы не пришли к выбору конкретной технологии.

    Обычно более двух вариантов лучше не давать, поскольку клиенту будет сложно определиться. Поэтому мы провели и аргументированно предложили выбрать между Kubernetes и  Amazon ECS . Нам изначально лучше казался второй вариант, поскольку он позволил бы за короткое время достичь конкретного результата (клиент смог бы продавать свой продукт конечным пользователям). Kubernetes является полноценной экосистемой с рядом дополнительных особенностей и возможностей. Все это добавляет функционалу, но этому клиенту он не был нужен. К тому же на тот момент в AWS не был полноценно доступен Kubernetes как managed service ( Amazon EKSработал только в нескольких регионах и с ограниченным функционалом). Это усложняло процесс менеджмента и поддержки этого решения. Однако клиент побоялся, что Amazon ECS сильно подвяжет их под AWS-облако (vendor lock), и остановился на Kubernetes.

    Что пошло не так

    Короче говоря, мы просто послушали клиента, а также внешних экспертов, утверждавших, что ECS не перспективная технология, развивать которую AWS не будет и начали делать проект на Kubernetes.

    Среди первых трудностей, с которыми столкнулись, были:

    • Решение должно было соответствовать PCI DSS (Payment Card Industry Data Security Standard). Это ограничивало использование некоторых managed-сервисов. Так, например, EKS тогда был доступен только в двух регионах и не имел этой сертификации. ECS, в отличие от него, подходил.
    • Managed-сервисы поднимать не могли, но могли использовать Vanilla Kubernetes. Операционная команда на стороне клиента оказалась не столь квалифицированной, чтобы его полноценно поддерживать.
    • К кластерам были особые требования, поскольку нужно было производить безопасную интеграцию сервисов основной платформы, не обрабатывающей платежные данные, с обрабатываемыми сервисами. С ECS это было бы гораздо проще.

    Следующие этапы, когда клиент должен был адаптировать решение в соответствии с результатами маркетингового исследования, а затем трансформировать его в SaaS-решения, были чрезвычайно длинными и сложными, еще и нужно было постоянно обучать команду поддержки, которая оказалась не готова к такому сложному стеку.

    Результат:

    • Дополнительная сложность проекта.
    • Затянутые сроки.
    • Проблема с гибкостью решения в разрезе его жизненного цикла, то есть в процессе того, как он развивался бы дальше.

    В конце концов, когда Amazon EKS сервис стал соответствовать PCI DSS в нужных нам регионах, мы перешли на него. Но, конечно, это было не так-то просто, учитывая, что нужно было переписывать под него все конфигурационные скрипты.

    В общем, это решение обошлось клиенту слишком дорого (дополнительные затраты на тренировку операционной команды и на сам кластер), он рассматривал переход и на ECS, и в другие облака (надеясь, что это поможет сэкономить), но это было бы еще сложнее и дороже.

    Чему научились

    Главный урок – важно объективно оценивать уместность технологий. Не ко всему нужно и можно применить Kubernetes (есть достаточно альтернатив, например, Amazon ECS и  HashiCorp Nomad ). Хотя у платформы и много возможностей, но они далеко не всем уместны, особенно когда речь идет о небольших проектах, нуждающихся в быстрых и максимально эффективных решениях. Не для всего нужны ракеты — для чего-то достаточно и воздушных шаров.

    Случай № 4. «Новые фичи – наша цель»

    Этому клиенту требовалась микросервисная архитектура с нуля, процесс CI/CD, и он соглашался с использованием IaC для развертывания менеджмента и инфраструктуры. Однако у клиента было ограниченное время на принятие решения и реализацию пилота (MVP) — ему сначала следовало показать решение MVP-интеграции и уже потом двигаться дальше. Получив широкое поле работы, мы навязали клиенту идею all-in-one-platform с большим количеством фич (представьте независимые компоненты с возможностью переиспользования, развертывания различных компонентов облачной инфраструктуры, использование различных типов сборки приложений, использование Golden Image и т.д.).

    Что пошло не так

    Проект оказался сложным, и в процессе имплементации произошло несколько ошибочных «потерь» разработочных оцеплений, что отняло у нас много усилий и времени, приводило к блокерам и срыву дедлайнов. В конце концов получилось много фич и воркераундов (это было связано с тем, что клиент еще не был готов менять все автоматизированно, как предполагалось).

    Мы поняли, что проект слишком комплексный и сложен и для нас, и для клиента. Мы создавали лишние Proofs of Concept, которые не выполняли реальные функции, но отнимали время. В конце концов оказалось, что созданная платформа имела высокий порог вхождения — в ней было много фич и элементов, поэтому клиенту было трудно понять, как ею пользоваться.

    Чему научились

    Этот проект научил меня важным вещам о целесообразности и необходимости определенных сервисов и функционала:

    • крайне важно понять, что именно нужно клиенту, и работать согласно этим потребностям, а не с собственными представлениями о проекте и интересными для нас вариантами его воплощения – наше мнение здесь далеко не на первом месте;
    • следует руководствоваться техническими возможностями клиента и уровнем развития его команды при регулировании сложности проекта — какими бы крутыми ни были фичи, которые мы создаем, в них не будет никакого смысла, если они не будут выполнять свое предназначение и не будут эффективно приближать клиента к его цели;
    • Proofs of Concept нужно делать только тогда, когда они доказывают value, иначе это бесполезная трата времени и усилий.

    Вместо выводов

    Ну и наконец несколько общих принципов, которые я для себя сформулировал:

    1. Здание начинается с архитектуры и фундамента, так же хорошо прописана архитектура – ​​ключевой компонент для успешного технологического проекта.
    2. Внимание к деталям важно: при необходимости можно изменить решение, но уже в самом начале работы нужно правильно определить, сколько времени требуется для реализации, насколько производительна работа и скоординированы ли отдельные команды, работающие над проектом.
    3. Атрибуты качества зависят от архитектурных решений: каждый дизайн требует компромиссов (если самолет пассажирский – акцент на комфорт, если военный – на скорость и безопасность), поэтому поймите, что именно нужно вашему клиенту и как можно скорее обсудите приоритеты.
    4. AWS landing zone очень полезна во время миграции – не игнорируйте ее преимущества.
    5. У стейкхолдеров ключевая роль в том, чтобы проект был успешен, и каждый из них отвечает за отдельные сферы, поэтому для того, чтобы понять всю систему, нужно найти общий язык с ними всеми. Задавайте стейкхолдерам правильные вопросы и ограничивайте каждое обсуждение небольшим количеством тем, чтобы максимально эффективно прорабатывать информацию.
    6. За все нужно платить — сервисы и платформы не бесплатны, каждое решение требует идти на определенные компромиссы (часто связанные с ценой), и если клиент к этому не готов, то уметь объяснить возможные последствия.
  • Что такое облачные сервисы и почему они так быстро развиваются

    Что такое облачные сервисы и почему они так быстро развиваются

    По прогнозам Gartner , в 2022 году расходы на корпоративные облака в мире составят $331,2 миллиарда. Облачные сервисы – один из наиболее динамичных мировых IT-рынков. Бизнес хочет быть гибким, мобильным и более эффективным, поэтому больше не хочет строить собственные дата-центры и заниматься их обслуживанием. Он выбирает облачные услуги.

    Что такое облачные сервисы

    Облачные сервисы – это платформы и программы, которые “живут” и работают на серверах специальных компаний – облачных провайдеров. Эти программы не нужно устанавливать на компьютер, а доступ к ним можно получить из любой точки мира. Dropbox, Google Drive, iCloud – все мы давно пользуемся этими и похожими продуктами, даже не осознавая, что они расположены в облаках. Нет смысла держать файлы на собственном компьютере, гораздо проще хранить данные и работать с ними на удобных и защищенных облачных платформах.

    Та же ситуация и с бизнесом. 1С в облаке более удобно, чем 1С на собственном сервере, который может сломаться, подхватить вирус или просто устареть. Если держать интернет-магазин в облаке, а не на собственном сервере, в день “черной пятницы” можно просто забронировать у облачного провайдера дополнительное место и не беспокоиться о том, что все “ляжет”. Переход бизнеса в облако помогает решить массу проблем, связанных с управлением сложной ИТ-инфраструктурой.

    Какими они бывают

    Ключевые облачные услуги можно представить в виде пирамиды. На самом низком уровне находится IaaS (Infrastructure-as-a-Service) – это серверы, хранилища, сети, вычислительная инфраструктура, которую облачный провайдер предоставляет для использования. Условно говоря, это просто пустой склад в аренду. Примеры IaaS – IBM Softlayer, Hetzner Cloud, Amazon EC2.

    На среднем уровне размещается PaaS (Platform-as-a-Service) — платформа для самостоятельной разработки и развертывания приложений. Это уже склад со стеллажами и техникой для погрузки его товаром. Примеры PaaS: Google App Engine, IBM Bluemix, Microsoft Azure, VMWare Cloud Foundry.

    И на самом высоком – SaaS (Software-as-a-Service), которую составляют готовые облачные приложения с доступом через веб-интерфейс. Это товар на полке нашего облачного склада. Примеры SaaS: Google Drive, Microsoft Office 365, Dropbox.

    Облака — прибыльный бизнес

    Больше денег крутится в сегменте SaaS: в 2018 году он составил $80 млрд (из $182,4 млрд общемирового облачного рынка). Второе место занял сегмент IaaS, на последнем месте – PaaS.

    Все началось в 2002 году с Amazon

    В начале 2000-х компания Аmazon, которую тогда все знали как онлайн магазин книжек, предложила своим клиентам размещать данные на удаленных серверах, без привлечения собственной инфраструктуры и оборудования. Идею подхватили и начали развивать Google, IBM и другие технологические гиганты. Следующие 18 лет развития технологий прошли в постоянном усовершенствовании облачных продуктов. Разработчики соперничали в умении создавать наиболее эффективные программы для организации виртуальной IT-инфраструктуры. Расходы на облачные вычисления росли быстрее, чем ожидалось, и в ближайшие годы останавливаться не собираются.

    Идея Аmazon оказалась более чем удачной. В 2012 году мировой рынок облачных услуг составил $26,4 млрд. В 2019 году он вырастет почти в 10 раз , к 2026 году – почти в 20 раз, до $521,8 млрд.

    Украинский облачный рынок перевалил за отметку в $22 млн

    В Украине облачные сервисы активно стали использоваться в 2014 году. После аннексии Крыма и Донбасса многие компании с востока переехали в Киев или другие города и решили не строить снова свои дата-центры (потому что это дорого), а арендовать место в облаках. Другого варианта сберечь бизнес у них не было.

    Основными поставщиками облачных услуг в Украине являются иностранные провайдеры – Amazon Web Services, Microsoft Azure, Tet (ex-Lattelecom) . Их доля на рынке составляет более 60%. В 2017 году объем украинского рынка публичных инфраструктурных облаков впервые превысил размер рынка традиционных дата-центров.

    Google, Amazon и Microsoft – мировые облачные лидеры

    Мировой рынок облачных сервисов концентрируется вокруг трех IT-гигантов: Google, Amazon и Microsoft, занимающих 70% рынка IaaS. Услуги Amazon и Microsoft используют компании США и Европы. В Китае рынок почти полностью монополизировал местный провайдер Alibaba Cloud.

    В Украине, помимо глобальных облачных провайдеров, также работают локальные операторы: De Novo , GigaCloud , UCloud , ” Парковый “, VoliaCloud , Tucha . По состоянию на 2020 год их общая рыночная доля составила $6,1 млн.

    Больше денег на облака тратят американские компании

    По итогам 2020 года американский бизнес потратил на облака $97 млрд – более 60% от общего мирового рынка. На втором месте – Великобритания с показателем $7,9 млрд, за ней следует Германия ($7,4 млрд). На рынке Азии лидируют Япония и Китай.

    В Европе облачный рынок распределен очень неравномерно. Развитые экономики западной Европы тратят на облака в разы больше, чем их восточные коллеги. По данным аналитической компании Forrester Research , в 2019 году облачный рынок западной Европы составил $24,1 млрд, восточной — всего $1,15 млрд.

    В Украине рынок облачных сервисов все еще находится на стадии активного роста. Его потенциал значительно больше, чем имеющиеся $22,2 млн. Украинские провайдеры по качеству услуг не уступают западному, к тому же готовы предлагать индивидуальные решения и оказывать техническую поддержку в максимально сжатые сроки. В принципе, никто не принуждает бизнес воспользоваться облачными сервисами. Он может и самостоятельно разворачивать и обслуживать сложные IT-системы, но в конце концов это может негативно отразиться на эффективности и конкурентоспособности компании.

  • DevOps с AWS CDK

    DevOps с AWS CDK

    Старший инженер Bolt, поделился возможностью использовать инфраструктуру как код с AWS CDK на примере веб игры.

    Образец архитектуры

    Архитектура, изображенная ниже, достаточно точно представляет ресурсы, использованные для проекта веб-версию хорошо знакомой игры Snake (изображение 1):

    Ключевые особенности:

    1. Это бессерверная архитектура: отсутствуют зарезервированные вычислительные мощности и отсутствуют расходы «вперед».
    2. Amazon API Gateway служит единственной точкой входа в приложение.
    3. Хранилище S3 используется для размещения статического веб-сайта и медиа-контента (в нашем случае самой игры).
    4. AWS Lambda используется как среда выполнения API.
    5. Dynamo DB сохраняет состояние системы (в данном случае это счет в игре).
    6. Ради простоты примера я должен обойти интеграцию с Cognito, которая в реальном решении была использована для идентификации пользователей.

    Согласно схеме выше, репозиторий содержит три проекта:

    /aws-snake 
    /snake-API # node/express API 
    /snake-client # игра на обычном JavaScript 
    /snake-iac # проект AWS CDK

    Оригинальный коммерческий проект построен на .NET Core, но для текущего образца я использую TypeScript по трем причинам:

    1. TypeScript выглядит чем-то средним между Java/C# и JavaScript.
    2. JavaScript-подобный синтаксис понимают почти повсеместно.
    3. Чтобы доказать, что CDK действительно работает независимо от выбранного языка программирования.

    Начало работы с CDK

    Старт работы с AWS CKD достаточно прост, вы можете либо следовать официальным инструкциям с начала работы, либо выполнить следующие шаги:

      • Создать аккаунт AWS .
      • Создать ключ доступа AWS .
      • Установить AWS CLI .
    curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
    sudo installer -pkg AWSCLIV2.pkg -target /
    • Конфигурировать AWS CLI, используя предварительно созданный ключ
      aws configure
    • Установить Node LTS .
      brew  install  node  # mac  
      sudo apt- get  install  nodejs  # debian
    • Установите AWS CDK toolkit.
      npm install -g aws-cdk
    • Установите целевую среду выполнения (в нашем случае TypeScript) .
      npm install -g typescript
    • Создать пустой CDK-проект.
      mkdir  test -iac  
      cd  test -iac 
      cdk init app --language typescript
    • Познакомьтесь с CDK командами.
      cdk  list  # Список всех стеков программы  
      cdk synthesize  # Синтезирует и печатае CloudFormation для текущего стека  
      cdk bootstrap  # Разворачивание стека инструментов CDK в среде AWS  
      cdk diff  # Сравнивает локальный стек с развернутым стеком и печатает разницу
      cdk deploy  # Развертывание стека в аккаунте AWS
      cdk destroy  # Уничтожить развернутый стек

    Вот и все! Теперь вы знаете все необходимые команды CDK. Хотя в основном вы будете использовать только две:

    cdk diff

    и

    cdk deploy

    Настройка стека

    Стек CloudFormation  — это коллекция ресурсов AWS, управляемых как одно целое, настраиваемое как шаблон JSON или YAML
    По сути, AWS CDK дает обертку над стеком CloudFormation, что позволяет создать его, используя язык программирования общего назначения.

    cdk init app

    создает пустой стек с соответствующим файлом программного кода, зависящий от целевого языка. В нашем случае это

    lib/snake-iac-stack.ts
    import  *  as  cdk  from  '@aws-cdk/core' ;
      export  class  SnakeIacStack  extends  cdk . Stack  {
           constructor (scope: cdk.Construct, id: string, props?: cdk.StackProps) {  
            super (scope, id, props);      
    // The pre that defines your stack goes here     
     } 
     }

    Добавление нового ресурса к стеку – это просто создание нового экземпляра класса, например, чтобы создать S3 хранилище для хостинга нашей JavaScript игры мы просто добавляем следующие строки :

    // pre that defines your stack goes here  
    // Snake Web Client  
    const snakeClient =  new  s3. Bucket ( this , nameIt( "website-s3" ), { 
    	bucketName: nameIt( "website-s3" ), 
    	versioned:  false , 
    	publicReadAccess:  true , 
    	websiteIndexDocument:  "index.html" , 
    	removalPolicy: cdk. RemovalPolicy . DESTROY  // remove on stack destruction 
    });
    

    Обратите внимание, что очень важно установить всеобщую конвенцию именования для всех ресурсов, например:

    <environment>-<project>-<resource>

    Для этого мы используем следующую вспомогательную функцию:

    const  envName =  'test' ; 
    const  nameIt =  ( name: string ) =>  ` ${envName} -snake- ${name} ` .toLowerCase(); 
    

    Сочетание ресурсов

    Существенной особенностью CDK есть возможность логически связывать ресурсы вместе, используя их как зависимости. Например, мы можем установить настроенный выше s3 как маршрут по умолчанию (точку входа) к нашему веб-приложению:

    // API Gateway  
    const snakeClientIntegration =  new  integration. HttpProxyIntegration ( { 
    	method: gate. HttpMethod . ПОЛУЧИТЬ , 
        url: snakeClientBucket.bucketWebsiteUrl, 
    }); 
    const httpApi=  new  gate. HttpApi ( this , nameIt( "Api-GateWay" ), { 
        apiName: nameIt( "Api-GateWay" ), 
        defaultIntegration: snakeClientIntegration, 
    });
    

    Далее мы можем установить маршруты API таким же образом:

    const apiGateway =  new  gate. HttpApi ( this , nameIt( "Api-GateWay" ), { 
       // ... // 
    }); 
    // Snake API  
    const apiLambda =  new  lambda. Function ( this , nameIt( "api-lambda" ), { 
       // ... // 
    }); 
    const snakeApiIntegration =  новая  интеграция. LambdaProxyIntegration ({ 
    	handler: apiLambda,  // api integration 
    }); 
    apiGateway.addRoutes({  // api route  
    	path:  "/api/{proxy+}" , 
    	methods: [gate. HttpMethod . ANY ], 
    	integration: snakeApiIntegration 
    }); 
    apiGateway.addRoutes({  // swagger route  
    	path:  "/swagger/{proxy+}" , 
    	methods: [gate. HttpMethod . GET ], 
    	integration: snakeApiIntegration 
    });

    То же касается управления контролем доступа, предоставления доступа к базе данных для компонента API:

    // Persistence layer  
    const table =  new  dynamodb. Table ( this , nameIt( 'DynamoDb - Table '), { 
    	 // ... // 
    }); 
     
    table.grantReadWriteData(apiLambda); // give api access to dynamo DB table 
    

    Для завершения образца конфигурации стека обратитесь в  репозиторий проекта

    Просмотр стека

    Во-первых, вы можете найти стеки CloudFormation в веб-консоли AWS (изображение 2):

    Изображение 2. Стеки CloudFormation в консоли AWS
    Во-вторых, тот же список стеков можно получить, выполнив следующую команду в терминале:

    aws cloudformation list-stacks

    Обработка дрейфа конфигурации

    К сожалению, это слабое место как AWS CDK так и CloudFormation, поскольку обнаружение и обработка дрейфа конфигурации пока отсутствуют «out of the box» (см. открытый вопрос ).
    Обработка дрейфа конфигурации возможна, но не тривиальна (см. статью ).
    Поэтому я бы предложил начать с предотвращения возможности внесения несанкционированных изменений в конфигурацию.
    В идеале все изменения в инфраструктуру должны вноситься программно, от имени отдельной учетной записи, используемой исключительно CDK приложением.
    Этот подход также может быть автоматизирован (см. открытый вопрос ).

    CI/CD

    AWS CDK может быть легко интегрирован в процедуры непрерывной доставки (continuous delivery). Для этого образца используются GitHub Actions, тогда как для оригинального проекта мы использовали Azure DevOps, отличия не существенны.
    Образец конфигурации CI/CD состоит из двух важных элементов:

    1. Скрипт для компиляции развернутых пакетов (./build.sh)
    2. Настройка GitHub Workflow в виде YAML файла, описывающего доставление в несколько сред (test, prod) с подтверждением администратора (/.github/workflows/ci-cd.yml)

    Полученный результат доставки отображен ниже (изображение 3):
    Изображение 3. Результат доставки GitHub Workflow
    Обратитесь к руководству CI/CD в Readme.MD для настройки.

    Вывод

    AWS CDK создал прецедент для DevOps практики будущего, а текущая разработка Terraform CDK доказывает существование широкой заинтересованности в использовании языков общего назначения для реализации «инфраструктуры как кода».
    Этот подход делает дисциплину непрерывного доставки доступнее, позволяет разработчикам быть вовлеченными в поддержку инфраструктуры, а также использовать существующие инструменты контроля качества как статический анализ, или даже модульные тесты.

  • Принципы автоматизации – ЯГНИ / Преждевременная оптимизация

    Принципы автоматизации – ЯГНИ / Преждевременная оптимизация

    Это часть серии статей, посвященных принципам сетевой автоматизации.

    Каждый инженер задается целью построить «правильную систему» ​​с первого раза, но возможно ли это вообще? Вы вообще знаете свои требования? Вы действительно знаете свои требования? Нет, серьезно, вы действительно знаете, каковы ваши требования? Введите ЯГНИ и преждевременную оптимизацию.

    ЯГНИ: «Вам это не понадобится» – это принцип экстремального программирования, который гласит, что программист не должен добавлять функциональные возможности до тех пор, пока он не будет сочтен необходимым, и «делать простейшие вещи, которые могут сработать». (DTSTTCPW) – Википедия

    Настоящая проблема в том, что программисты потратили слишком много времени, беспокоясь об эффективности в неправильных местах и ​​в неподходящее время; Преждевременная оптимизация – это корень всего зла (или, по крайней мере, большей его части) в программировании. – Искусство программирования

    Книга «Искусство программирования» была написана в 60-х годах и актуальна до сих пор.

    Теория информатики

    Год назад у меня был дизайнерский разговор с коллегой, где он напомнил мне, что нотация Big-O не учитывает константы.

    Нотация Big-O не заботится о константах, потому что нотация Big-O описывает только долгосрочную скорость роста функций, а не их абсолютные величины.

    Это хорошее правило, которое следует учитывать при предоставлении двух почти одинаково взвешенных вариантов, таких как сравнение поиска по хешу / словарю и поиска по списку, который сравнивает O (1) и O (n), и оба они хорошо понятны / легко выполняются. Однако введение оптимизаций, таких как многопоточность или многопроцессорность, до того, как вам понадобится, по сути, затрудняет поддержку кода. Это значительно увеличивает возможности проектирования, вероятность возникновения условий гонки и возможность устранения неполадок.

    Понятно, почему константы не имеют значения в нотации Big-O, но в практическом применении это определенно имеет значение. Возьмите временную сложность Big-O с наихудшей скоростью O (n!) (O-факториал), где вы никогда не сможете достичь числа выше «2» в качестве значения «N». Кроме того, оптимизация процесса, который занимает всего 0,1% вашего реального времени, мало что дает. Однако трудно увидеть, где будет происходить оптимизация, пока вы не доберетесь до нее. Наконец, оптимизация вашего процесса может не привести к дополнительной экономии, например, когда фактическая неправильная оптимизация процесса ожидает одобрения со стороны человека.

    Другой небольшой пример использования Python создает лямбда-выражения и понимание списков вместо простых циклов for. Особенно в командах разработчиков, где программирование не было в центре внимания, дополнительная сложность обычно превышает эффективность, полученную при построении решений для автоматизации сети.

    Мое личное путешествие

    Ошибки – я совершил несколько ошибок и, вероятно, буду делать еще несколько. Я попал в кроличью нору, слишком рано вводя нефункциональные требования (такие как аутентификация и ведение журнала), добавляя функции до того, как они понадобятся, и делая программное обеспечение «фреймворком». Я был счастлив, что смог использовать код оптимизации, но ни разу не увидел, что программа покидает фазу проверки концепции. Другими словами, я потратил много времени на код, который не использовался каким-либо значимым образом из-за добровольных требований и оптимизаций.

    Пример использования сетевой автоматизации

    В сетевой автоматизации о скорости вы часто слышите. На самом деле, это, вероятно, то, что я больше всего слышу от своих коллег по отрасли, и это люди, которых я считаю умными и уважаемыми. Однако в случаях использования, с которыми я сталкиваюсь ежедневно, это редко является важным фактором. Большинство вариантов использования можно разделить на несколько основных категорий.

    • Небольшие инкрементальные изменения, подключаемые к 1-5 устройствам за раз в течение окна изменений.
    • Ежедневные задачи, такие как резервное копирование конфигураций, соответствие конфигурации и сбор рабочих данных, не зависящие от времени.
    • Редкие глобальные изменения, такие как обновление списков контроля доступа SNMP или обновление IP-адресов сервера NTP.

    По моему опыту, эти примеры являются наиболее распространенными в корпоративной среде и мало чувствительны ко времени, когда соединение, занимающее миллисекунды или минуты, мало повлияет на продукт в целом.

    Пример из реальной жизни

    Я работал с клиентом над ежедневным процессом резервного копирования и обеспечения соответствия конфигурации для 8000+ устройств. Некоторые участники сообщества явно задокументировали, что Ansible работает медленнее, чем, скажем, Nornir 2. Однако места, где оптимизация принесла наибольшую пользу, не были, вероятно, теми местами, которые вы ожидали, и решения также были неочевидными.

    Требования

    Требования, относящиеся к этому сообщению в блоге, включают:

    • Выполните все задания менее чем за 24 часа, в том числе:
      • Резервное копирование конфигураций сетевых устройств.
      • Предполагаемая генерация конфигурации, интеграция с внешним Источником Истины (SoT).
      • Сравнение соответствия конфигурации по функциям (BGP, NTP, SNMP и т. Д.) На каждом устройстве.
      • Сверните отчеты о вышеперечисленном.
    • Возможность запускать задания для отдельных устройств

    Первоначальное развертывание этого процесса было успешным, но по мере добавления устройств и функций процесс занимал все больше времени. Быстрый анализ показал, что конфигурация резервного копирования и создание конфигурации занимает слишком много времени.

    Многопоточность

    Одна проблема, с которой столкнулись в течение многих лет, заключалась в перегрузке сервера TACACS слишком большим количеством запросов одновременно, что делало невозможным слишком быстрое масштабирование без дополнительных изменений инфраструктуры. По этой причине такое разрешение многопоточности не подходило.

    Широкое масштабирование

    Хотя были очевидные проблемы со слишком широким масштабированием и слишком быстрым, это не значит, что мы не могли использовать масштабирование более широко. Использование ресурсов, связанное с управлением большим количеством устройств в Ansible, замедляло процесс. Причины неэффективности менее важны, поскольку решение было довольно простым. Решения включают создание нескольких рабочих процессов в Ansible AWX / Tower и распределение нагрузки по типам ОС для устройств NXOS и EOS и по регионам для устройств IOS. Эту оптимизацию было относительно легко произвести, и она практически не повлекла за собой изменений конструкции.

    Генерация конфигурации

    Мы заметили, что создание конфигурации занимает много времени. У нас было две основные гипотезы, почему:

    • Неэффективность в том, как Ansible использует Jinja.
    • Неэффективность в том, как Ansible идемпотентно проверяет изменения конфигурации файлов.

    Заменить Jinja было бы сложно, однако, поменять способ реализации идемпотентности – простое изменение. Нам просто нужно было заменить модуль шаблона Ansible для поиска по шаблону Ansible и сохранить файл с настраиваемым фильтром.

    Исходное задание:

    - name: "GENERATE FILES FROM JINJA TEMPLATES"
      template:
        src: "{{ src_file }}"
        dest: "{{ dst_file }}"

    Новое задание:

    - name: "GENERATE FILES FROM JINJA TEMPLATES"
      set_fact:
        save_to_file: "{{ lookup('template', src_file) | save_output_to_file(dst_file) }}"

    Плагин фильтра:

    def save_output_to_file(content, destination):
        """Save content to file."""
        with open(destination, "w") as fh:
            fh.write(content)
        return destination
    
    class FilterModule(object):
        """Ansible filter class."""
    
        def filters(self):
            """List of filters."""
            return {
                "save_output_to_file": save_output_to_file,
            }

    Оказывается, мы увеличили эффективность в 7 раз при этом изменении и уменьшили примерно с 5 часов обработки до примерно 40 минут. Более того, мы ничего не добились от идемпотентности в этом варианте использования, поскольку намеревались отслеживать через GitHub. На сотнях устройств знание того, изменилась ли задача, не помогло в долгосрочной перспективе, но было полезно при использовании контроля версий.

    Уроки выучены

    Если бы мы приступили к оптимизации до понимания реальной проблемы, мы почти наверняка рассмотрели бы многопоточность, что заставило бы нас ввести новые технологии, которые в конечном итоге не работали бы в этом варианте использования. Понимание проблем и атака на них с использованием фактических данных (времени выполнения задач) позволили нам понять проблемы, с которыми мы столкнулись. Не было введено никаких функций, которые не были нужны немедленно.

    Но мой вариант использования уникален!

    Большой!! Затем сделайте это, введите правильную степень сложности, необходимую для решения вашей проблемы. Эти принципы не меняют этого, они просто заставляют каждого инженера по-настоящему рассмотреть варианты. По любой причине, чтобы не вводить функцию, будут причины для ее внедрения, некоторые даже могут сказать: «Это зависит».

    Личный опыт говорит о том, что, к большому разочарованию автоматизатора, сетевые инженеры стараются изо всех сил объединяться в стандартных конфигурациях и проектах сетевых устройств. Инженеры по автоматизации борются за объединение наборов решений и инструментов по схожим причинам. Иначе говоря, «сетевые снежинки» – Плохо, «снежинки автоматизации» оправданы. Имея это в виду, я бы призвал автоматизаторов не внедрять новые инструменты, технологии или сложности.

    Заключение

    В конце концов, это сложная тема без однозначного ответа. Для каждого примера, который у меня есть, когда я хотел бы не потратить время на создание чего-либо, у меня есть другой пример, в котором я хотел бы «сделать это правильно с первого раза». Учитывая, что целевая аудитория – это те, кто создает решения для автоматизации сетей в корпоративном пространстве, важно учитывать контекст.

    Я не сторонник того, чтобы никогда не рассматривать завтрашние проблемы, и лично я сторонник построения с учетом модульности. При этом всегда необходимо учитывать баланс.

     

  • NFD21 – Архитектура сетевой автоматизации

    NFD21 – Архитектура сетевой автоматизации

     В этом разделе  рассмотрим концепции и компоненты более высокого уровня, необходимые для построения успешной платформы сетевой автоматизации. Я хочу выделить здесь несколько разделов и моментов.

    Человеческое и деловое взаимодействие

    Инструменты и технологии, которые попадают в этот раздел, предназначены для непосредственного предоставления интерфейсов автоматизации, которую мы создаем для сети. Это такие вещи, как наши приложения для управления ИТ-услугами (ITSM), а также платформы для чата и общения. ChatOps – это термин, который часто используется в отрасли и продолжает набирать обороты в автоматизации сетей. Интеграция с чат-платформами позволяет бизнесу передавать сетевые данные и рабочие процессы в каналы, по которым уже ведутся разговоры. Возможно, что еще более важно, эти возможности позволяют сделать автоматизацию нашей сети доступной для заинтересованных сторон вне сетевых групп напрямую.

    Управление данными

    Если бы я выбрал один-единственный раздел в своем выступлении, чтобы назвать его наиболее важным, это был бы этот раздел. Что касается автоматизации сети, то в отрасли недостаточно говорится о данных. Как и в любой другой вертикали в технологическом пространстве, данные лежат в основе всего, что мы делаем, и автоматизация сети не исключение. По мере роста сообщества автоматизации сети появляется понимание концепции использования Источника истины (SoT), который является авторитетной системой записи для определенной области данных. Эта последняя часть является ключевой, потому что на самом деле мы можем (и реально имеем) иметь несколько источников истины, которые не пересекаются. Например, наши IPAM и DCIM могут быть разными системами, потому что они управляют разными доменами данных. Это действительно до тех пор, пока у нас не более одного инструмента IPAM или DCIM, поскольку именно отсюда происходит фраза «Единый источник истины»,

    Тем не менее, наличие множества различных систем создает собственные проблемы. На первом этапе каждой системе в нашем наборе инструментов для автоматизации сети потенциально потребуется ссылаться на множество различных систем, чтобы получить данные, необходимые для выполнения автоматизации. Что еще более важно, это тесно связывает клиента с источником данных и форматом. Чтобы бороться с этим, мы стремимся реализовать уровень агрегации между источниками истины и системами, потребляющими их данные. Эта агрегация служит нескольким важным сценариям использования.

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

    При этом мы переходим к третьему пункту, который заключается в том, что агрегатор взаимодействует с различными источниками настоящих систем подключаемым способом. Реализуя адаптер, агрегатор понимает данные и формат, поступающие из отдельного источника истинного значения, и способы преобразования данных в соответствии с абстрактной моделью данных. Это позволяет агрегатору легко реализовать поддержку различных источников реальных платформ, так что они могут быть заменены в любое время. Если вы хотите сменить поставщика IPAM, все, что вам нужно сделать, это создать (или взаимодействовать с NTC) адаптер для агрегатора, который понимает, как выглядят данные, поступающие из нового IPAM.

    Мониторинг, оповещение и видимость

    Может показаться немного странным говорить о мониторинге и предупреждениях в контексте автоматизации сети, но мы делаем больше, чем просто управление конфигурацией. Фактически, суть этой темы сосредоточена вокруг концепции «автоматизации с замкнутым циклом» или создания контура обратной связи в платформе автоматизации, которую мы создаем. В видео вы услышите, как я говорю о платформе автоматизации как о стеке, и с одной стороны мы перемещаемся вниз по стеку к реальной сетевой инфраструктуре, но с другой стороны, события выходят из сети и возвращаются вверх по стеку. . Действительно, эти события приходят в традиционных формах опроса SNMP, сообщений системного журнала и т. Д. Они также могут иметь новые формы, такие как показатели временных рядов и потоковая телеметрия. Мы также пересмотрели уровень хранения и обработки, чтобы реализовать более современные базы данных временных рядов, которые позволяют помечать точки данных метками метаданных, что открывает двери для более интеллектуальных запросов и визуализации. Говоря о визуализации, мы хотим предоставить заинтересованным сторонам бизнеса сетевые данные, и мы хотим делать это в режиме самообслуживания с помощью современных инструментов панели мониторинга. Опять же, это случай предоставления бизнесу сетевых данных и рабочих процессов.

    Возвращаясь к механизму хранения, нам нужно вывести эти сетевые события из их разрозненных хранилищ для мониторинга и передать обратно в платформу автоматизации. Мы делаем это с помощью механизмов обработки правил, которые утверждают бизнес-логику на основе метаданных, которые прикреплены к собранным точкам данных. Как только потоки событий возвращаются в нашу платформу сетевой автоматизации, наша петля обратной связи начинает обретать форму. Теперь мы можем создавать автоматизированные рабочие процессы исправления, которые позволяют инженерам сосредоточиться на реальном проектировании и архитектуре, а не на устранении неполадок и устранении известных повторяющихся событий. В ситуациях, когда необходимо участие человека, платформа может, по крайней мере, собирать важный контекст из сети в качестве формы сортировки первого уровня,

    Операционные модели

    Последняя тема, которую я хочу затронуть, — это идея о том, что ни одна платформа автоматизации сети никогда не сможет удовлетворить потребности всех сетей и организаций. Более важные выводы из этого выступления – различные компоненты, которые входят в архитектуру платформы, которая наилучшим образом соответствует вашим потребностям. Это правда, что компания A может иметь возможность приобрести готовый продукт автоматизации у поставщика и быть совершенно счастливой, в то время как компании B может потребоваться полностью индивидуальное решение в течение более длительного периода эволюции. 

  • Что такое MACH

    MACH is yefa for Microservices-based, API-first, Cloud-native, and Headless principles for designing software applications.
    MACH — это группа архитектурных принципов, которые при применении вместе обеспечивают построение системы, отвечающей современным требованиям к программному продукту.

    Что же это за требования такие? Ну, можно накопить стандарты *-ilty (maintainability, scalability, deployability, saleability), но все сводится к обычному «чтобы было легче, а не сложнее».

    Расшифровываем принципы
    Пока все эти принципы давно известны и даже немного странно их описывать, потому что это очевидно как день, но может какому-то джуну это будет полезно.

    Microservices-based – нет, не нужно все сразу писать на нано микро-сервисах, просто нужно проектировать систему так, чтобы бизнеслогика была отделена друг от друга, насколько это возможно (Aggregations form DDD). Писать код, пытаясь сделать гипотетическое обособление этого функционала в независимый сервис более легким и с меньшим влиянием на общий продукт.

    API-first — функционал, открытый для использования через публичные контракты, которые утверждаются до начала разработки, и меняются только после тщательного обдумывания. Потому что, когда понимаешь, чего ожидают, реализуется это легче.

    Cloud-native — не забывать об акрониме IaC и пользоваться железом от Andy Jassy\Sundar Pichai\Satya Nadella на выбор. И желательно не просто железом, а интегрироваться со всем доступным количеством сервисов и автоматизировать все доступные процессы. Согласитесь, когда все автоматизировано, даже деплой становится проще нажатия одной кнопки merge.

    Headless — стараться не привязываться к фреймвокам (фреймворки меняются, а for-циклы навсегда). О построении бэкенда агностического к фронтенду это и так ясно. Но если экспрессовский req-res не протекает в контроллере, то заменить его на фастифай будет легче.

    Итак, что дает нам выполнение всех принципов MACH?

    Гибкое, но без хаоса в контрактах решение. Когда продакт-овнер утверждает изменение в контракте, а бизнес-логика разделена и концентрирована, можно забыть о хаотичных скрипах и эстимейти овер 9000 для придания одной фичи.
    Когда едешь на облаке, трудно увязнуть в болоте старых технологий. Cloud-провайдер сам побуждает пользоваться их новыми сервисами и не костянеть в технологиях, при этом хайрить разработчиков будет легче.
    Скейлите микро-сервисы в облаке, это далеко не то же, что отменить 10 ящиков за балансировщиком.
    Если фреймворк – это плагин, то сообщение об остановке его поддержки не приведет к облысению техлида.
    Автономная бизнес-логика с автоматическими деплоями сделает счастливым любого скрам-мастера, спринты крутятся и функционал релизится.

    Может MACH что-то уносит?

    Как любой свод правил он ограничивает и заставляет.

    Как минимум, он заставляет думать каждый раз, как комитиш или не нарушается какое-либо из правил. А вынуждение лишний раз подумать – это уже хороший повод не пользоваться им.
    Headless-принцип ограничивает архитектуру, принуждает строить дополнительные механизмы обеспечения границ меж функционалом (абстракции, DTO etc). А любые усилия, потраченные не на реализацию бизнес логики, бесполезны в глазах продакт-овнера (и не только).
    Api-first – меняет процессы разработки, заставляет нетехнический персонал согласовывать контракты API, запрещает девелоперу добавить какое-либо нужное ему свойство к респонcу.
    Глубокая интеграция с клаудом требует времени и усилий на овладение сервисами, знания целесообразны только для конкретного провайдера и не нужны для другого.
    Существенные инвестиции на старте в построение автоматизированной инфраструктуры CI\CD еще до начала построения MVP идет вразрез с модерновой парадигмой, когда после первого спринта уже нужно отдавать продукт на апробацию для получения обратной связи.
    Если обобщить, то эти ограничения и принуждения забирают скорость.

  • Что такое облачные технологии и ЗАЧЕМ ОНИ НУЖНЫ

    Что такое облачные технологии и ЗАЧЕМ ОНИ НУЖНЫ

    Облачные технологии – это технологии распределенной обработки цифровых данных, с помощью которых компьютерные ресурсы предоставляются интернет-пользователю как онлайн-сервис. Программы запускаются и выдают результаты работы в окне web-браузера на локальном ПК. При этом все необходимые для работы программы и их данные находятся на удаленном интернет-сервере и временно кэшируются на клиентской стороне: на ПК и др.

    Преимущество технологии в том, что пользователь имеет доступ к собственным данным, но не должен заботиться об инфраструктуре, операционной системе и программное обеспечение, с которым он работает. Слово «облако» – это метафора, олицетворяющая сложную инфраструктуру, скрывает за собой все технические детали.

    Виды облачных технологий

    Имеются следующие категории облачных технологий:

    • Публичное облако – одновременный доступ многих пользователей к IT-инфраструктуры. Но возможности управлять и обслуживать данную облако в пользователей нет, вся ответственность возложена на ее владельца. Абонентом предлагаемых сервисов может стать любая компания или частное лицо.
    • Частное облако – IT-инфраструктура, которую контролирует и эксплуатирует только один абонент в собственных интересах. Инфраструктура для управления частнім облаком может размещаться либо в помещениях пользователя, или у внешнего оператора или частично у пользователя и оператора.
    • Гибридное облако – это IT-инфраструктура, в которой объединены лучшие качества публичного и частного облака. Такая композиция уникальные объекты, связанные между собой стандартизированными или собственными технологиями, которые позволяют переносить данные или программы между компонентами.

    Возможности облачных вычислений

    Существует несколько уровней облачных вычислений:

    • Низкий уровень «Инфраструктура как услуга» (IaaS, infrastructure as a service). Пользователи получают базовые вычислительные ресурсы: процессоры и устройства для хранения информации – и используют их для создания собственных операционных систем и приложений. Потребитель не управляет базовой инфраструктурой облака, но имеет контроль над операционными системами, системами хранения, развернутыми приложениями. Возможен ограниченный контроль выбора сетевых компонентов (например, хост с сетевыми экранами).
    • Следующий уровень «Платформа как услуга» (PaaS, platform as a service). Пользователи имеют возможность устанавливать собственные приложения на платформе, предоставляемой провайдером услуги. Пользователь не управляет базовой инфраструктурой облака: сетями, серверами, операционными системами и системами хранения данных, но имеет контроль над развернутыми приложениями и некоторыми параметрами конфигурации среды хостинга.
    • Высший уровень облачных вычислений «Программное обеспечение как услуга» (SaaS, software as a service). В «облаке» хранятся не только данные, но и связанные с ними программы, а пользователю для работы нужно только веб-браузер. Потребитель пользуется приложениями провайдера, который работает в облачной инфраструктуре. При этом пользователь не управляет базовой инфраструктурой облака – сетями, серверами, операционными системами, системами хранения, также индивидуальными настройками приложений за исключением некоторых настроек конфигурации программы.

    Примеры облачных решений

    На данный момент в мире правят три гиганта – AWS, Azure, Google Cloud. Эти компании занимают львиную долю рынка по всему миру (кроме Китая, там есть еще Alibaba Cloud), являются технологическими лидерами и задают тренды в развитии облачных IaaS сервисов. Например, сейчас AWS имеет в своем портфолио более 100 сервисов (IaaS, SaaS, PaaS).

    Благодаря облачным вычислениям данные организации можно анализировать для поиска шаблонов и сведений, делать прогнозы, улучшать их и принимать другие бизнес-решения. Облачные службы могут предоставить вашей организации более высокую вычислительную мощность и продвинутые средства для получения огромного количества данных, а также возможность быстрого масштабирования среды по мере увеличения их объема.