<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.4">Jekyll</generator><link href="https://sergio.ao/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sergio.ao/" rel="alternate" type="text/html" /><updated>2024-12-06T10:26:57+01:00</updated><id>https://sergio.ao/feed.xml</id><title type="html">Sergio Maziano</title><subtitle>Sharing experiences to the world, one at the time.</subtitle><author><name>Sergio Maziano</name></author><entry><title type="html">Building Wiza 02 - Teck Stack</title><link href="https://sergio.ao/jekyll/update/2024/09/27/building-wiza-02-tech-stack.html" rel="alternate" type="text/html" title="Building Wiza 02 - Teck Stack" /><published>2024-09-27T10:00:00+01:00</published><updated>2024-09-27T10:00:00+01:00</updated><id>https://sergio.ao/jekyll/update/2024/09/27/building-wiza-02-tech-stack</id><content type="html" xml:base="https://sergio.ao/jekyll/update/2024/09/27/building-wiza-02-tech-stack.html"><![CDATA[<p>Defining the architecture or choosing the tech stack is always an interesting adventure, from my experience it always has been a matter of choosing your own battle hill, when the choice is done, you “fight” for it.
But the experience also teached me that when you found out that your stack is not longer going to fit the business, you rather change it while you can because it can quickly became the hill where you are going to parish.
I wanted a platform that we could quickly prototype a solution but also could scale to the highest level of performance, we wanted something that we could bring less experienced personnel but at same time we possessed a lot of experience to guarantee proper development and maintenance.</p>

<p>Based on the projects I’ve engineered throughout the years the choice was quite obvious but it needed to check this boxes:</p>
<ul>
  <li>Experience</li>
  <li>Large community</li>
  <li>OSS</li>
  <li>Cheap</li>
</ul>

<p>The selected technologies responded to all the above requirements. For more details we’ve shared our complete stack <a href="https://stackshare.io/wiza-ao/payments">here</a>.</p>

<h2 id="development-tools--services">Development Tools &amp; Services</h2>
<p>Choosing Ruby (<strong><a href="https://rubyonrails.org">RubyOnRails</a></strong>) over Go was a challenge due to the fact that I I’ve been developing my own set of tools (<em>avoiding to call it a framework, but definitely going to need to find some time to make it ready for a proper OSS project</em>) for Go but RubyOnRails was the winning factor. It’s mature, fast (yeah, it’s faster to deliver products than it’s with Go) and I’m very experienced with it also.</p>

<p><img src="/assets/images/rails.png" alt="rails" /></p>

<p>For the presentations layer we had the classic fight between <strong><a href="https://flutter.dev">Flutter</a></strong> vs. React but actually the choice was much easier here, flutter all day. Based on the fact both platforms matched very well in regard of features, support and maturity the only differentiators where just the experience I had with it and the developers pool available in country.
For the simple pages for Wiza <strong><a href="https://vuejs.org">VueJS</a></strong> was the option no competition here.</p>

<p>The choosing of a message queue was also a simple deduction based assertion based on the fact of being a battle tested solution and also because of having a very substantial experience with it. Ruby On Rails has very solid messaging queues “solutions”, but I wanted to make sure if I needed to change the backend in the future it will be possible without changing the whole chain.
So, RabbitMQ was the solution as it delivered everything we wanted:</p>
<ul>
  <li>Scale to large monolith or microservices</li>
  <li>Use of multiple message queues solutions</li>
  <li>High availability</li>
  <li>Simple decoupling</li>
</ul>

<p>As the image above suggests, we needed a object storage solution and you could hear the drums of Microsoft Azure and AWS in the horizon… but of course I would not go for it just for the simple fact that we did not have the financial resources to burry uncontrolled thirsty of storing at these services.
We went for <strong><a href="https://min.io">Minio</a></strong> a similar service that was compatible with S3 cloud storage service. We could handle the service management, it could give us the tier one level service and we could decouple later (which would imply that we are able to afford it). So, team experience, large community  and OSS boxes are all checked under these technologies.</p>

<h2 id="so-whos-hosting-that-baby-">So… who’s hosting that baby ?</h2>

<p>Well, we clearly did not have much of financial room to maneuver to get saved by the magic of push and deploy, but we had the boldness and the ninja skills and also it was 2022 not 1999, <strong><a href="https://ubuntu.com">Ubuntu</a></strong> VPS + <strong><a href="https://www.docker.com">docker</a></strong> + <strong><a href="https://kubernetes.io">kubernetes</a></strong> equals let’s Go!!!</p>

<p><img src="/assets/images/kubernetes.jpeg" alt="rails" /></p>

<p>So, I spun a couple of virtual private servers on AWS and Azure and got my hands “dirty” on building a multi regional cluster for everything.
Setup a backend services running RubyOnRails API services pods, NGINX fired up and run as Web Server and Reverse Proxy for everything accessible outside and AWS bouncing connections with <a href="https://aws.amazon.com/elasticloadbalancing/">Amazon ELB</a>.</p>

<p>We spin our own container registry just because we wanted to make sure deployments were faster and <strong>cheaper</strong> of course with the maestro Kubernetes handling the orchestration using <a href="https://microk8s.io">MicroK8s</a> with <a href="https://github.com/features/actions">Github Actions</a>.</p>

<h2 id="keeping-an-eye-on-everything">Keeping an eye on everything</h2>
<p>When talking about other people money the first thing that comes to my mind is  <a href="https://villains.fandom.com/wiki/Big_Worm#:~:text=Big%20Worm%20is%20one%20of,him%20to%20pay%20his%20debt.">Big Worm</a> quote about handling other peoples money “<em>…Playing with my money is like playing with my emotions</em>” and to maintain a tip top service on a financial business without playing with others emotions it’s necessary top notch solutions to monitor closely everything that happens in and around the platform.
<a href="https://papertrailapp.com">Papertrail</a> (SaaS) comes to rescue as solution to log everything from backend services which then shovels them to <strong><a href="https://grafana.com/oss/loki/">Loki</a></strong> which we run it as a private container service. Then <strong><a href="https://grafana.com/grafana/">Grafana</a></strong> centralizes all the monitoring for every single service and server running for the platform.</p>

<h2 id="decisions-are-based-on-data">Decisions are based on data</h2>
<p>We try to relay on data as much as we can, and to give the glimpse over what happens at Wiza we had to implement a solution that could give the freedom to collect and analyze data without much technical expertise or effort.
So, Apache Superset delivered plethora of options, more than we needed at start and being a OSS made it even more attractive.</p>

<p><img src="/assets/images/superset.jpeg" alt="rails" /></p>

<p>The skills to build, deploy and maintain all those tools and services together spans over multiple disciplines and can only be achieved with several years of experience in several areas, I recognize that. But the most significant skill is the ability to incrementally putting them together at the right time, this requires methodology and luckily software engineering has some very interesting ones and I look forward to share next time how we’ve managed to put some of them together to continue to deliver products and features to Wiza in my next post, until them “<strong><em>Wiza tukina</em></strong>”</p>]]></content><author><name>Sergio Maziano</name></author><category term="jekyll" /><category term="update" /><summary type="html"><![CDATA[Defining the architecture or choosing the tech stack is always an interesting adventure, from my experience it always has been a matter of choosing your own battle hill, when the choice is done, you “fight” for it. But the experience also teached me that when you found out that your stack is not longer going to fit the business, you rather change it while you can because it can quickly became the hill where you are going to parish. I wanted a platform that we could quickly prototype a solution but also could scale to the highest level of performance, we wanted something that we could bring less experienced personnel but at same time we possessed a lot of experience to guarantee proper development and maintenance.]]></summary></entry><entry><title type="html">Building Wiza 01 - Timeline</title><link href="https://sergio.ao/jekyll/update/2024/09/21/building-wiza-01-timeline.html" rel="alternate" type="text/html" title="Building Wiza 01 - Timeline" /><published>2024-09-21T10:00:00+01:00</published><updated>2024-09-21T10:00:00+01:00</updated><id>https://sergio.ao/jekyll/update/2024/09/21/building-wiza-01-timeline</id><content type="html" xml:base="https://sergio.ao/jekyll/update/2024/09/21/building-wiza-01-timeline.html"><![CDATA[<p>To tell you the whole story how building Wiza came about, it’s important to tell you about the timeline it happened and how much effort and dedication was put forth into this venture.</p>

<p>By 2022, I was finishing up an assignment and just left a partnership (vPOS) I was involved  with and I wanted to do something different within fintech. I received multiple invitations to lead engineering teams in a couple of fintechs but I passed on the option simply because I was not too attracted to the direction some where going or because I just could not understand their vision, but I did consult for some of them for a while.</p>

<p>During this whole time I started to work on something that I later shared with one of my old partners and based on the experience we had within the Angolan market it just made sense to try it.
So, myself and Kamal D’Nigel decided to take this on and create what is today known as  Wiza, and so far it has been a good experience.</p>

<p>The image below shows what life was like for me in 2022, working almost everyday. I lived by the motto of “Work smarter” but this new venture required me to “Work harder”, whilst Kamal was out there trying to convince partners and merchants that this was the way forward. If you ever tried to do anything in Angola you should put some respect on the work that he was putting in.</p>

<p><img src="/assets/images/github_01.png" alt="first-timeline" /></p>

<p>By year 2023 the scenario did not change much for me, at least for the first semester, and you can imagine how this affected me personally and professionally. I had to literally coded almost everyday and had to handle other business responsibilities that I had at NEXT.</p>

<p><img src="/assets/images/github_02.png" alt="second-timeline" /></p>

<p>By the last semester of 2023 most of the payment providers were on board in Angola, including one in RDC (Republic Democratic of Congo) and we had on board a couple of customers using our platform to facilitate payments and manage their business operations. During this time I was able to bring on board two developers to help me on mobile development and frontend development.</p>

<p>Myself and Kamal were on full time support mode. Guaranteeing the clients satisfaction became the number one task, I even joined WhatsApp (those who know me understand what that means).
Today in 2024 the platform has matured in processing thousands of transactions per day but more importantly there are small, median and even larger business who relay 100% on Wiza for their business management, payment processing, e-commerce and others.</p>

<p><img src="/assets/images/github_03.png" alt="third-timeline" /></p>

<p>Now that we reached that moment where Wiza has seen enough battles to go general public, we are going to be releasing these solutions one by one for small business owners and large corporations with business models that make sense for all.
I’ll be telling you all about the technology choices and the challenges I faced so far and what methodology I’ve been using to handle them in future posts.</p>]]></content><author><name>Sergio Maziano</name></author><category term="jekyll" /><category term="update" /><summary type="html"><![CDATA[To tell you the whole story how building Wiza came about, it’s important to tell you about the timeline it happened and how much effort and dedication was put forth into this venture.]]></summary></entry><entry><title type="html">Hello World, Again!</title><link href="https://sergio.ao/jekyll/update/2024/02/09/hello-world-again.html" rel="alternate" type="text/html" title="Hello World, Again!" /><published>2024-02-09T12:45:00+01:00</published><updated>2024-02-09T12:45:00+01:00</updated><id>https://sergio.ao/jekyll/update/2024/02/09/hello-world-again</id><content type="html" xml:base="https://sergio.ao/jekyll/update/2024/02/09/hello-world-again.html"><![CDATA[<p>Hello world!
It’s has been a minute since I’ve made myself visible and available on the network also known as internet.
I’ve been working on several exciting projects that I look forward to share with everyone but the main reason has been mostly because most of the gatherings have become just much toxic to one to handle.</p>

<p>With the recent developments in terms of social gatherings aka social networks the one that has caught my attention if the <a href="https://bsky.social">bluesky</a> project with his new protocol and features such as moderation I believe I can once more try and give this thing one more ride.</p>

<p>This is it for now and talk to you until next post.</p>

<p><strong>PS</strong>: I’ve sign-up to <a href="https://bsky.app">bluesky</a> and you can find me at <a href="https://bsky.app/profile/sergio.ao">@sergio.ao</a></p>]]></content><author><name>Sergio Maziano</name></author><category term="jekyll" /><category term="update" /><summary type="html"><![CDATA[Hello world! It’s has been a minute since I’ve made myself visible and available on the network also known as internet. I’ve been working on several exciting projects that I look forward to share with everyone but the main reason has been mostly because most of the gatherings have become just much toxic to one to handle.]]></summary></entry></feed>