From AWS Zero to Hero: What I Have Learnt in My GovTech Internship

Bbobohang
SCTD, GovTech
Published in
4 min readJul 17, 2024

Background

Prior to joining GovTech’s Smart City Technology Division (SCTD), I had absolutely zero knowledge of cloud computing, AWS, and its services. All I knew were the theories about how cloud computing works, why it’s needed, and the underlying mechanisms — that’s all!

Nevertheless, given that it was my last chance to be an intern, I applied for a role in the Systems Engineering Team where the high-level job description was to help with the migration of existing applications from on-premise to cloud. Thankfully, even without any knowledge of AWS/Cloud, my manager, Furi AK, decided to give me an opportunity to learn on the job. Now, here I am, migrating and managing an entire microservice on AWS. Here are some learning points from my 5-month stint.

Learning Point 1: Don’t Be Afraid to Ask, but Ask Smart Questions

When I first took on this role my knowledge of AWS was non-existent, and the initial challenge seemed overwhelming. My first task was to understand the existing system. During the first two weeks, I immersed myself in learning and tried to envision how to migrate the applications. Despite my efforts, I often felt lost and unsure of where to begin. Fortunately, I had a supportive manager and a senior engineer who checked on me regularly and encouraged me to ask questions whenever I encountered difficulties.

Initially, I hesitated to ask questions, fearing it would make me appear incompetent. However, I quickly realised that leveraging the knowledge and experience of my colleagues was essential for my progress. While my instinct was to ask directly, “How do I do this?”, my manager advised me to first come up with a potential solution and then seek feedback as I quote him: “Ask me anything but don’t ask me how to do it”. This approach pushed me to think critically and attempt to solve problems on my own before seeking assistance.

I discovered that by trying to solve issues independently, my understanding of the AWS ecosystem deepened significantly. When I did ask for help, I framed my questions around the solutions I had considered, which not only clarified my thinking but also demonstrated my initiative. This method not only resolved my immediate issues but also enhanced my learning through exploration and self-discovery.

Overall, this collaborative and proactive approach in the team helped accelerate my learning curve and made the transition to working with AWS much smoother.

Learning Point 2: Be Flexible

The migration process from on-premises to the cloud is rarely straightforward. Through my internship, I learnt the importance of flexibility in navigating the complexities of cloud migration. There were instances where our initial plans did not go as expected, requiring us to pivot to alternative solutions.

One notable challenge occurred when I encountered a resource constraint with AWS Lambda. Our intention was to use AWS Lambda as an API endpoint, but I discovered a payload constraint with a maximum response size of 6 MB. More information can be found here. Previously, with the API endpoint served on-premises, we did not face this limitation. Discovering this constraint midway through the implementation posed a significant challenge, as some of the data we needed to process exceeded this limit. This situation highlighted the need for flexibility and adaptability in finding alternative solutions when the initial implementation proved unfeasible.

After consulting with the senior engineer, Nicholas Lee, we devised two workarounds. The first, a short-term fix, involved breaking down the request into multiple smaller requests to ensure the payload remained within the 6 MB constraint. The second, a long-term solution, leveraged on AWS S3. Instead of returning the large payload through the Lambda function, we uploaded the required data to S3 and provided a pre-signed, publicly accessible URL for the client to download the data directly from S3. This workaround effectively mitigated the Lambda payload limitation. Detailed implementation can be found here.

Due to our tight timeline, we decided to implement the short-term fix first and look into the long-term fix after the migration was completed. Nevertheless, this experience taught me the importance of the ability to adapt and be flexible when solving problems.

Learning Point 3: Importance of a good team and team lead

My experience working in the Systems Engineering Team highlighted to me the importance of effective teamwork. In large projects like this cloud migration requires the collective effort of diverse teams with varied expertise. Throughout my internship, I collaborated closely with developers, IoT engineers, and DevOps engineers, gaining insights from their different perspectives on how to approach and solve problems.

I was fortunate to be part of a collaborative team where we regularly took lunch and coffee breaks together. Beyond our scheduled meetings to discuss the migration process, these informal gatherings facilitated rapport and team bonding. Our team lead often organized these lunches, which significantly helped break the ice and foster stronger relationships among team members. These interactions allowed me to gain valuable knowledge not only in technical areas but also in general life advice, such as considerations when purchasing a Build-to-Order (BTO) flat.

This experience highlighted how teamwork and camaraderie can enhance the efficiency and effectiveness of a project. By building strong interpersonal connections and fostering a supportive environment, our team was better equipped to tackle the challenges of cloud migration. I also thoroughly enjoyed my time working with the team (shout out to Wei Lun, Zhi Qian, Chong Cheng, Deepak and James Yeap for this special experience) and I am thankful for this wonderful opportunity in the team!

--

--