Caching 101

Caching is something we use to reduce the access to the original source. To do that, we store the data temporarily on another medium. We can use various tech to achieve that, but whatever we choose should be faster or lighter than the original source. This will help our users to retrieve our data faster than before. It will also help lower the initial resource utilization. Depending on what we choose, we can save some costs.

Read more

Tiny Guide to Webscaling

Someone on Twitter asked what if Khairul Aming wanted to set up his own website for his sambal? For those who may not know, his product has gained fame and typically sells out quickly once he opens orders. At present, he utilizes Shopee.

From a business standpoint, it’s advisable for him to stay with Shopee. My post is primarily for educational purposes.

Disclaimer: I am not an SRE/DevOps professional, but rather someone eager to share insights that might broaden understanding of web scalability, drawn from my limited experiences. Therefore, there may be inaccuracies, though I hope none too significant.

Read more

CoinGecko’s Interview Process for Level 1 to Level 3

I’ve been talking to a prospective candidate who has been inquiring about the best way to prepare for the interview. I was surprised to see that his first email was sent in May 2022. His most recent question pertained to the interview process, and this was my response (with some additions):

Disclaimer: Much of this work is handled by our Engineering Manager and HR department as they are the leads in this process. My response is based on what I recall.

Read more

Minimizing Problems Before and When They Occur

Although we use monolithic architecture, we actually “break down” the application into several parts in production, such as:

  • Web
  • Free API
  • Paid API
  • Mobile API

Workers (background jobs)

Therefore, when we deploy, it does not mean that all servers will receive the new application. If we deploy to the Web and there are issues, only the Web will be affected. However, some applications may still have problems if they manipulate shared data until it becomes corrupted.

Read more

How I used chained branches to help with the major upgrade

I want to share how I manage multiple library/gem/package updates simultaneously while doing big upgrades. But before we start, it’s important to know why.

Significant upgrades require a more considerable change of files. The number of files you need to change can get out of hand. You may have to replace some code due to the deprecations, or you may have to deploy in multiple stages to avoid breaking the production.

Read more