Usando Docker e docker-compose

Containers de transporte coloridos empilhados em de dois arcos. Um arco passando por dentro do outro
Containers de transporte coloridos empilhados em de dois arcos. Um arco passando por dentro do outro
container-storage-trade-haulage créditos a ValdasMiskinis

Introdução

Nos dias 14 e 15 de dezembro de 2020 tive a oportunidade de apresentar o workshop Containerizando o ambiente com Docker no evento DoWhile organizado pela empresa Rocketseat.

O objetivo desse artigo é ser uma versão do workshop em forma de texto.

Um pouco sobre mim

Olá pessoal, sou Rodrigo Botti, sou engenheiro backend no Zé Delivery. Sou entusiasmado por práticas de DevOps e curto automatizar o possível tanto na vida profissional quanto fora do trabalho.

O workshop

Nesse workshop vamos aprender a utilizar Docker e docker-compose para criar um ambiente de desenvolvimento containerizado.

Isso será feito com o objetivo de facilitar…


Currying e composição de funções na prática

Pequena tijela de cerâmica cheia de curry em pó com uma colher em cima
Pequena tijela de cerâmica cheia de curry em pó com uma colher em cima
tumeric-spice-curry-seasoning créditos a stevepb

Introdução

Nos dias 14 e 15 de dezembro de 2020 tive a oportunidade de apresentar o workshop Programação funcional: Currying e composição de funções na prática no evento DoWhile organizado pela empresa Rocketseat.

O objetivo desse artigo é ser uma versão do workshop em forma de texto.

Um pouco sobre mim

Olá pessoal, sou Rodrigo Botti, sou engenheiro backend no Zé Delivery. Sou entusiasmado por programação funcional, tenho estudado e praticado bastante sobre o assunto. Além disso há tempos venho empregando esse paradigma profissionalmente.

O workshop

Nesse workshop vamos aprender sobre higher order functions, curry, aplicação parcial e como essas…


Using AWS & OpenVidu Pro — Part 2

Camera in the foreground (focused) filming a woman in the background (unfocused). Behind the woman there’s a book shelf.
Camera in the foreground (focused) filming a woman in the background (unfocused). Behind the woman there’s a book shelf.
Video, Camera, Optics, Photography, Shooting, Film by StockSnap

Recap

Last time we had a small introduction to OpenVidu, how we deployed OpenVidu Pro to our AWS account, it's cluster architecture and it's scalability features.
After that we figured out a way to add auto scaling capabilities to its media nodes by using OpenVidu Pro's REST API and some features and services from AWS.

Introduction

This time we'll actually look at some of the code of the auto scaling solution. I'll try to explain in-depth some of the code bits and configuration values used.

The code used will spam these technologies:


Using AWS & OpenVidu Pro — Part 1

Camera in the foreground (focused) filming a woman in the background (unfocused). Behind the woman there’s a book shelf.
Camera in the foreground (focused) filming a woman in the background (unfocused). Behind the woman there’s a book shelf.
Video, Camera, Optics, Photography, Shooting, Film by StockSnap

Introduction

With the advent of the global pandemic and social isolation recommendations there was push for companies to develop digital solutions that enable people to execute their tasks remotely. More and more video conferencing and video chat platforms and services are becoming popular and a part of people's lives.

Here at Nexa Digital — owned by DASA, the biggest diagnostic medicine company in Latin America — we create digital solutions for the health sector. Most recently we were tasked with incorporating a telemedicine solution to our telehealth platform Livia Saude to enable medical…


Using Elixir — Part 4

Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
bottles-potions-ink-dye-magic by JalynBryce

Note: This is part of “My Journey into CQRS and Event Sourcing” series. If you’re jumping in right now, please consider reading the previous ones.
<< Part 1 | < Part 3

Recap

Last time we created an Event Handler that was responsible for notifying a patient when someone asked it for consent:

  • Event Handler that listens to ConsentAsked events
  • Based on the event payload, a text message was built alerting the patient that a specific actor asked for permission to access a health record

Introduction

This time we'll explore some ways to optimize our application by dealing with two problems the…


Using Elixir — Part 3

Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
bottles-potions-ink-dye-magic by JalynBryce

Note: This is part of "My Journey into CQRS and Event Sourcing" series. If you're jumping in right now, please consider reading the previous ones and if you like what read here, please consider reading the next ones.
<< Part 1 | < Part 2 | Part 4>

Recap

Last time we exposed the Consent Service as an HTTP REST-ish API using the Phoenix Framework:

  • Command-side api exposed as POST requests
  • Read-side api exposed as GET requests

Introduction

This time we'll tackle another element of the CQRS + Event Sourcing architecture pattern: the Event Handler.

We'll develop an Event Handler that will…


Using Elixir — Part 2

Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
bottles-potions-ink-dye-magic by JalynBryce

Note: this is part of "My Journey into CQRS and Event Sourcing" series. If you're jumping in right now, please consider reading the previous ones and if you like what read here, please consider reading the next ones.
< Part 1 | Part 3 >

Recap

Last time we started by explaining the theoretical basis of the architectural patterns and started building an Elixir application (revolving around medical consent):

  • higher level api with a command/write side and a query/read side
  • command side: dispatches commands to aggregates producing domain events
  • query side: event handlers build projections into a relational database optimized for…


Using Elixir — Part 1

Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
Three small flasks sealed with corks. From left to right: blue, red and yellow dye are being slowly mixed in each one.
bottles-potions-ink-dye-magic by JalynBryce

Note: this is part of “My Journey into CQRS and Event Sourcing” series. If you like what read here, please consider reading the next ones.
Part 2 >

Introduction

A while ago I decided to start learning more about CQRS and Event Sourcing. Those were both architectural patterns that have always fascinated me, that have always seemed like a good fit for an evolving application/system architecture specially when it comes to a microservices based one. Unfortunately I've never had the chance to work in an application/system which applied both these patterns.

Since I know that I learn something a lot better…


Composition made easier

A small ceramic bowl filled with powdered curry with a spoon on top
A small ceramic bowl filled with powdered curry with a spoon on top
tumeric-spice-curry-seasoning credit to stevepb

Introduction

A few days ago I was talking to my best friend via text. We do this thing where we send code (or code-like) snippets to each other as a way to talk about everyday situations. For instance we might write I.see(you).at(days.tomorrow()) instead of "see you tomorrow" (yes…it's nerdy).

Anyways…last time I sent her a code snippet that contained a curry statement around some functions. That raised some questions which I proceeded to answer directly in chat. Not to pat myself on the back but I really liked the way I explained it (so did she) and I decided to write…

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store