Resize an Image in AWS S3 Using a Lambda Function

Overview

AWS Lambda is a compute service that runs your code in response to events and automatically manages the compute resources for you, making it easy to build applications that respond quickly to new information.

AWS Lambda starts running your code within milliseconds of an event such as an image upload, in-app activity, website click, or output from a connected device. You can also use AWS Lambda to create new back-end services where compute resources are automatically triggered based on custom requests. (more…)

Continue Reading Resize an Image in AWS S3 Using a Lambda Function

CI Tools comparison: CodeBuild vs Bitbucket Pipelines vs Jenkins

Multiple tools are available to do CI/CD. In the article, I’ll compare CodeBuild, Bitbucket Pipelines and a brief overview of Jenkins.

Notifications

Both offer notification options. On Bitbucket, you can add Slack notifications quickly by going to Chat Notifications > Settings > Add Subscription. CodeBuild integration is not that intuitive but offers a more significant deal of flexibility. You would have to subscribe build-notifications to SNS topic. From there you can add AWS ChatBots to push notifications to your Slack, or email, or Lambda, or HTTPS endpoint or even send SMS.

You could also add custom logic to your notifications. Bitbucket offers webhooks on pipeline events.

CodeBuild triggers existing Bitbucket webhooks too, which makes migration less painful.

(more…)

Continue Reading CI Tools comparison: CodeBuild vs Bitbucket Pipelines vs Jenkins

О понятии «бессерверные технологии» serverless

У многих бессерверные вычисления ассоциируются с существующими платформами, представляющими услуги в формате «функция как сервис» (function-as-a-servise, FaaS), что вполне понятно. Многих эти платформы разочаровывают, заставляют с подозрением смотреть на всё «бессерверное». Однако, это — слишком узкий взгляд на вещи.

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

О понятии «бессерверные технологии»

Бессерверные технологии — это всегда абстракция уровня сервиса, иллюзия, созданная ради удобств конечного пользователя. Аппаратное обеспечение при этом, естественно, никуда не девается. По сути, можно выделить две определяющие характеристики бессерверных технологий: невидимая инфраструктура вместо настраиваемых образов виртуальных машин? и схема оплаты, основанная на фактически потребляемых ресурсах вместо фиксированной почасовой ставки. (more…)

Continue Reading О понятии «бессерверные технологии» serverless

Serverless Best Practices

Within the community we’ve been debating the best practices for many years, but there are a few that have been relatively accepted for most of that time.

Most serverless practitioners who subscribe to these practices work at scale. The promise of serverless plays out mostly at both high scale and bursty workloads rather than at a relatively low level, so a lot of these best practices come from the scale angle e.g. Nordstrom in retail and iRobot in IoT. If you’re not aiming to scale that far, then you can probably get away without following these best practices anyway.

And remember that best practices are not “the only practices”. Best practices rely on a set of underlying assumptions. If those assumptions don’t fit your use case, then those best practices may not fit.

My main assumption is that everybody is building their application to be able to run at scale (even if it never ends up being run at scale).

So these are my best practices as I see them. (more…)

Continue Reading Serverless Best Practices

6 Современных шаблонов проектирования архитектуры в области ПО

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

В этой статье я расскажу о некоторых шаблонах проектирования, которые могут с легкостью помочь вам достичь вышеупомянутых возможностей. Я расскажу о каждом паттерне, о том, как использовать этот шаблон в облачной среде, а также о том, когда его использовать, а когда нет.
Некоторые из этих шаблонов не так уж и новы, но очень полезны в современном мире интернет-облаков. (more…)

Continue Reading 6 Современных шаблонов проектирования архитектуры в области ПО

Разработка через тестирование

TDD существует с 1999 года и является методом разработки программного обеспечения, основанном на тестировании. В 2003 году американский разработчик Кент Бек «заново открыл» TDD и применил его как способ создания простых конструкций и внушающих доверие. На сегодняшний день, TDD – это процесс разработки программного обеспечения, использующий очень короткий цикл обратной связи, при котором разработчики:

  1. Создают тест, который не может быть пройден.
  2. Пишут рабочий код, который пройдёт тест.
  3. Делают рефакторинг кода, написанного на втором шаге, используя созданный тест доводят код до совершенства.

Целью TDD является спецификация, а не валидация. Это один из способов продумать требования или дизайн до того, как функциональный код будет написан. TDD даёт возможность написать чистый код, который работает. (more…)

Continue Reading Разработка через тестирование

Getting started with Kubernetes

In this multi-part series of articles about Kubernetes, I’ll try and capture what I think everyone who wants to learn and work with Kubernetes should know about.

If you have read any of my previous articles or courses you know that I like to learn and teach by practical examples. As much as I like practical examples, there are a lot of terms and concepts in Kubernetes that you need to understand. But I promise you that once you go through the whole series you will understand the concepts and be able to run an application or a service that uses a database inside Kubernetes.

If you are a beginner to cloud-native, you might want to check out my Beginners Guide to Docker article to get the basic understanding of Docker. But don’t worry, even if you don’t know about Docker, you’ll be able to follow along. (more…)

Continue Reading Getting started with Kubernetes

Kubernetes (K8s) 

Kubernetes (K8s) — открытое программное обеспечение для автоматизации развёртывания, масштабирования контейнеризированных приложений и управления ими[7]. Поддерживает основные технологии контейнеризации, включая Docker, также возможна поддержка технологий аппаратной виртуализации[8].

Как и многие другие сложные продукты, Kubernetes в рамках своей экосистемы вводит ряд специфических понятий и концепций. (more…)

Continue Reading Kubernetes (K8s) 

Что такое Legacy код

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

Для уточнения: исправление ошибок предыдущих версий до тех пор, пока их контракт на долгосрочную поддержку не закончится, да. Добавление нового функционала, который можно выпустить в версии X, в версии X-1, только для того, чтобы не обижать пользователей X-1 — абсолютно и 100% нет. Аналогично, добавление X-1 кода в версию X только потому, что он может «пригодиться», должно быть признано недопустимым. Если вы по-прежнему берете с людей плату за X-1 и строите свои апгрейды поверх этого, то у вас очень плохой бизнес-план. (more…)

Continue Reading Что такое Legacy код

Микросервисная архитектура в разрезе

Использовать микросервисную архитектуру или нет? Статью с плюсами и минусами, внутренней коммуникацией, принципами и заблуждениями относительно микросервисной архитектуры опубликовал сайт proglib.io.

Виды архитектуры

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

Отчего возникают следующие проблемы:

  • отказоустойчивость;
  • горизонтальное масштабирование;
  • применение одной технологии или языка и невыгодность переписывать огромный монолит;
  • сложность рефакторинга из-за хранения кода в одном месте и куча legacy;
  • трудности работы в команде разработчиков;
  • чтобы использовать повторно, придётся дробить.

Второй по популярности вид архитектуры – пара монолитов, микс из монолита и сервисов или даже микросервисов. То есть вы сохраняете монолит, а доработки выполняете с использованием современных технологий. (more…)

Continue Reading Микросервисная архитектура в разрезе