What is DevFest? DevFests are local tech conferences hosted by Google Developer Groups (GDG) around the world. Each DevFest event is crafted by its local organisers to fit the needs and interests of its local developer community.
Last Saturday, the Google DevFest 2022 was held at the African Leadership College (ALC) in Pamplemousses. There were two simultaneous tracks with 12 sessions in total from 15 speakers.
The day started similar to DevCon 2022 days... waking up at 04h00 and hitting the road by 06h30. Shelly & I picked up Pritvi, Girish and Vidush along the way. We reached the ALC campus by 08h00. As we arrived at the campus' security checkpoint, Shelly got down from the car and explained the security personnel about the event and handed her the list of attendees. This was a security requirement by ALC — they needed the names of all attendees in order to allow them to access the college premise. Totally understandable, it's a college and they have rules.
As we moved to the parking area I noticed JoKi's Mitsubishi SUV. Seconds later I saw JoKi walk by and we waved. Mary Jane was already at the cafeteria's entrance where the registration desk was meant to be. In fact, they had started setting up that area — with the tables and roll-up banners. The DevFest 2022 backdrop was yet to be set up. Pritvi gave a helping hand with that.
The opening ceremony was held in the cafeteria. Few minutes before it started, JoKi checked the sound equipment and tested his laptop display on the TV. Meanwhile, registration was in full swing.
Registration was faster and smoother with the QR verification. Once checked-in, attendees received their DevFest attendee badge, a t-shirt, stickers and a 50% discount voucher by cloud.mu.
Attendees spread around the campus checking the presentation rooms, sponsors area, meeting people, etc.
At 09h00, everyone came to the cafeteria for the opening ceremony. DevFest 2022 kicked-off! JoKi welcomed everyone and explained about the Google Developer Groups around the world and what is DevFest. He invited Yovin Poorun, Computing Degree Program Lead at the African Leadership College, to address a few words.
Yovin's support and assistance in making the DevFest 2022 happen at the African Leadership College was greatly appreciated.
Then, Didier Béphage, Technology Director at SD Worx addressed a few words. SD Worx was one of the sponsors of DevFest 2022 and they have continuously supported local dev activities in Mauritius.
Didier spoke about SD Worx and the company's culture. He went through some details as JoKi displayed the company's website on the TV.
The first presentations in Rooms 1 and 2 were started at 10h00.
My talk was scheduled at 11h00 in Room 1. I reached there a few mins before, as Dhanesh was concluding his presentation on CI/CD in Google Cloud. My talk was about deploying a Laravel application on the Google Kubernetes Engine.
I started with explaining about Laravel. It is an open-source project, it has great documentation, it follows the MVC principle, it has several first-party packages and deployment is a piece of cake (like most PHP applications).
I spoke about the Laravel ecosystem, tools such as Forge and Vapor, starter-kits like Breeze and Jetstream — how they all make development less of a struggle.
I touched on the Model-View-Controller subject and explained how the data, the design and the logic are kept separate, giving the developer better control over the code.
Then, I mentioned Laravel Bootcamp, for anyone wishing to start Laravel development. Bootcamp is ideal for somebody who is just starting a career in webdev to get an idea on how full-stack development is possible with Laravel. One may choose to write all the backend logic in PHP and design fancy pages using either Blade templates, Vue.js or React.
A Laravel project can be created with just a few commands. Adding Breeze to that, we can have an authentication feature built into the app instantly.
Say we have a working Laravel project... how do we deploy that on Kubernetes. Not just, yet. We need to break down the application components such that the code can run on as many instances while the application data resides on a centralised location which every instance can access.
Thus, we can move the database to Google Cloud SQL and the file storage to Google Cloud Storage. We are then left with just the application code and some binaries required to run the application — which can now be multiplied on as many virtual machines as we need or deploy them in containers in a Kubernetes cluster.
I spoke about the advantages of using a managed Kubernetes platform such as the Google Kubernetes Engine (GKE).
Kubernetes is being actively developed. A one-man army cannot simply develop applications and manage Kubernetes clusters on his own. GKE provides plenty of options for a DevOps to configure how the cluster must run, scale and be cost effective.
GKE provides two types of clusters — standard and autopilot. In the former, you can choose the number of nodes you want in the cluster and provision those nodes according to your needs. You are billed a management fee and also billed for every running node (a Google Compute instance) irrespective of whether there are any workloads running on the node or not.
However, in the autopilot mode, GKE decides what is best. Thus, upon creation there are no running nodes at all in the cluster. Nodes are provisioned when workloads are deployed. You cannot add/remove nodes in the autopilot cluster. Those are done automatically by GKE when the workloads require additional resources or nodes can be scaled down if no more required.
The autopilot cluster is more cost effective because they are not billed per node (i.e per Compute instance) but instead they are billed per pods (calculated as per the amount of resources required by the pods).
During the demo part of the presentation, I created two clusters, one standard and the other as autopilot. I showed that the cost using the default settings in a standard cluster would result in a monthly bill of above $300 even if nothing is deployed. In the autopilot mode, a flat fee of $0.10/hour is applied which results in a $72/month flat amount and each pod is billed individually for the vCPU, memory and ephemeral storage used.
I also explained how pricing changes across different regions while explaining the difference between regions and zones.
Coming back on the discussion on containers, I showed how I containerised a Laravel application and mentioned a peculiar issue that I encountered on my Apple M1 Macbook. The M1 processor is ARM64 and thus the container is built for ARM64. Pushing that container to the Google Artifacts Registry and then deploying it on GKE throws an "exec format error".
It took me a while to realise my mistake — being a relatively new "M1 user".
I should have built the container for the
linux/amd64 architecture before pushing it to the Google Artifacts Registry.
JoKi from the audience commented whether the
--platform flag couldn't have been specified in the Dockerfile. Yes, that could be done too.
However, in my case, I was building and testing the container on ARM64. Then, for deployment on GKE, I would build the container for linux/amd64 and push it to the Google Artifacts Registry. Therefore, it was easier to specify the architecture at build time instead of hardcoding it in the file.
Lastly, I talked about the
kubectl CLI tools which I used to interact with the cluster. Using
kubectl I obtained information about the pods and I could also investigate the pods individually.
Neil asked whether one could choose the container engine to use by GKE. I answered that GKE would most probably use the CRI-O engine rather than docker-runc. During my experiments I did not find whether GKE could be configured to use a different container engine or a different architecture like ARM64.
That's it! I was able to cram everything in 45 mins.
After my session, I went back to the cafeteria for lunch. Luckily, there was vegetarian food. 🫑🍅🥬
Next, I attended Pritvi's session about improving your exposure as a local guide on Google Maps using Google Lens. I am glad I attended the session. It was very helpful to understand how Google Maps behaves as a social network for "local guides". There is a point system and local guides gain more points for correcting and improving the accuracy of Google Maps — e.g adding a missing place, uploading pictures of a restaurant, the restaurant's menu, uploading building signage etc.
You can follow other local guides and of course others can follow you. You can write reviews about places you visit and people finding those reviews helpful may... well... like the reviews. 😉
Like I said earlier, it was very helpful, educational and an interactive session. In fact, during the session I intervened and explained how I have been trying to remove a wrong pin dropped over my home for some "organic product business" which is nowhere around my place (at least not that I know of). Both Shelly and I tried several times to remove it but nothing happened. Then, during the talk, Chittesh and Aditya requested the removal of that place on Google Maps. It was immediately removed! 😊
After Pritvi's presentation, I remained in the same room to attend Abdur-Rahmaan's presentation about SQLite internals. I very much liked the presentation — digging a piece software to understand how it works internally. Abdur-Rahmaan did just that.
He started with some history about SQLite and its creator Dwayne Richard Hipp. Then, minutes later the discussion changed from story to practicals. He talked about the compiler having a parser and a code generator. The latter produces a bytecode which is then run in a VM — which in turns can be broken into several components to understand each one's functionality — like the role of a pager, btree, shim etc.
He then explained about recovery, how does SQLite avoid data corruption if there is a power outage while some write operation was still happening.
Time was short for this talk but before he completely ran out of time, Abdur-Rahmaan spoke about some alternatives/forks to SQLite — libSQL and LumoSQL.
For me, right there, it was a fruitful day and a very successful DevFest. I shared some knowledge and I learned some.
I briefly attended the last session of the day in Room 2 by Dr. Amreesh Phokeer, a Data Expert at the Internet Society.
He explained about a project he is working on at the Internet Society — Measuring Internet Resilience in Africa (MIRA). He described how he used Google Cloud products such as BigQuery and Looker Studio to create a Data Pipeline.
Lastly, the closing ceremony happened in the cafeteria. There was the list of thank you's, mentioning all sponsors, partners, attendees, volunteers and JoKi thanked the three Google Developer Student Clubs (GDSC) on the island — African Leadership College, Polytechnics Mauritius and the University of Mauritius — while also encouraging them to take the lead in organising future DevFests.
Google Developer Student Clubs of #Mauritius at #DevFest2022. pic.twitter.com/jHVRmaUGc6— Ish Sookun (@IshSookun) December 11, 2022
There were some prize giveaways following questions put by JoKi and some of the GDSC Leads.
A fruitful day with lots of learning and sharing! Thank you Google for endorsing and encouraging such activities.