In this guide you will learn how to install Nginx, MySQL 8.0 and PHP 8.1 and PHP-FPM on Ubuntu 22.04.
continue reading »Leader Election with Consul and Golang
Leader election is the process of designating a single node as the organizer of some task distributed among several nodes. The leader will be responsible for managing the others and coordinate the actions performed by other nodes. If for any reason the leader fails, other nodes will elect another leader and so on. This can help to ensure that nodes don’t conflict with each other.
continue reading »Introducing Hippo: A Golang Microservices Toolkit
It all began when I started to build some web services in golang. and everytime I have to create the whole architecture from scratch than solving whatever problem I was trying to solve.
continue reading »Leveraging Consul’s DNS Interface
Consul DNS interface allows applications to make use of service discovery without any integration with Consul. For example, instead of making HTTP API requests to Consul, a host can use the DNS server directly via name lookups like clivern.service.us.consul.
continue reading »Django Custom Month and Year Lookup
Everyone want to keep Django timezone support but sometimes you need to keep your SQL queries a way from timezone conversion especially if by default your application timezone is UTC. Django will do something like this CONVERT_TZ(`app_incident`.`datetime`, 'UTC', 'UTC'))
and it will return Null
if the timezone table is empty. Even that conversion is not even needed.
Django Custom Lookups
By default Django has a date
lookup that support timezones. It actually will wrap your field with CONVERT_TZ
in case USE_TZ
is True
. This is pretty awesome unless you have timezones table empty because this call will return Null.
Building a Service Mesh with Consul
Load balancers aren’t efficient in a dynamic environment where we scale services up or down. Consul uses a registry to keep a real-time list of services, their location, and their health. Services query the registry to discover the location of upstream services and then connect directly. This allows services to scale up/down and gracefully handle failure
continue reading »