We may hear some buzz words about Cloud Computing such as Public Cloud, IaaS, Cloud Native, or Chaos Engineering but what exactly is Cloud Computing and why do we need it? How critical is the role of a Cloud Engineer and whether it is a promising career? In this post, we'll look at these topics and see MoneyForward and Mekari real use cases, as well as some tips to set foot in this field.
I'm Truong Nguyen, Software Engineer @ Team Nikko, CTO Office. At the end of November, I have a chance to join a webinar as a speaker of Mekari’s webinar for students. The topic was "Is Cloud Engineering a Promising Career Field to Get Into?". This is a very practical topic and I want to share my thought about this. So I, Rudy, and Abdi from Mekari had a 1 hour discussion and answer questions from participants. I will share what we discussed in this post.
Q: What is Cloud & Cloud computing?
Before cloud computing exists, when we want to build a service we need to build everything from scratch and build by ourselves. For example, if we want to build a website, we have to buy a physical server, set up a web server, buy physical storage, external hard drive for data backup. We can see right away the downside is that the first upfront cost is huge. We don't know whether our service is successful or not but we lost the upfront cost already. Not to mention that the whole process is hard and takes time, not everyone can set up a web server, configure Nginx, etc. That requires IT experts for managing, maintaining the infrastructure. Sometimes we might not use the full potential of the resource which comes to a waste of money.
For that reason, cloud computing was created to solve all of these problems. It provides computing services over the internet. Services here might be hardware, software, or as general as a solution. In the example above, it could be a web server or a data backup solution. As long as users have an internet connection, they can access it from almost anywhere, anytime.
So cloud is just a metaphor for the internet. The reason they choose cloud is that I think that back in those days I was at university, when we draw a diagram a packet goes to the internet, we usually draw a cloud symbol right. So I'm guessing that is why we have that terminology.
Q: What is the cons of cloud computing?
The nature of cloud computing is whenever we have an internet connection we can use the services that cloud computing provides us. But if we don't have a good connection to the cloud provider, the experience won't be good.
For example, if I were to launch a service for Vietnam market, I won't choose public cloud because there is no public cloud datacenter in Vietnam yet. I think the nearest Datacenter is in Singapore, so user from Vietnam has to go to Singapore to use the service. And that introduces latency. For a web service, latency bigger than 100ms might be not acceptable. We should consider building or renting a data center near most of the users.
However, this disadvantage is gradually improved as cloud computing infrastructure is becoming more and more available everywhere.
Q: Roles of a Cloud Engineer?
A Cloud Engineer responsible for performing the technical work related to cloud computing. This can involve anything from migrating an existing application to the cloud, or building solutions for new applications in the cloud, or operating/maintaining/monitoring applications in the cloud.
Although smaller organizations often employ a single cloud engineer as a generalist, larger businesses are more likely to break the role up into multiple positions for more specialized expertise such as Solutions Architect, Cloud Developer, SysOps, Devops, etc.
Q: How important should a Software Engineer know about cloud computing?
I think only writing code doesn't make it a good Software Engineer, writing code is almost the final step of solving problems. What makes a good Software Engineer is how we came up with a solution and does the solution is good enough. Cloud computing already provides us with so many solutions, all we have to do is to pick the right tools for the right job.
If a Software Engineer wants to advance further in technical, either to Tech Lead or Solution Architect, it's all about solving problems, not coding. Having cloud computing knowledge opens up so many possibilities and it adds up so great value to your career path.
Q: Importance of a Cloud Engineer, especially for Mekari and Money Forward?
One of MoneyForward's Values is user focus, we constantly research the market, identify users' pain and provide them with solutions. For SaaS companies as well as Mekari, the most important thing is to build a solution that matters, which actually fixes users' problems and should be released fast. So that we could test with real customers and constantly improve it or because the opponent might come up with the same idea and already get the head before us. So as a conclusion the release should be fast.
To do it, the role of cloud engineers is very critical. They need to come up with the best optimal solution for the problem, creating an infrastructure that is highly scalable and secure.
MoneyForward event partners with AWS as advisors to consult us with best practices, case studies, the latest update from AWS, also communicate when an incident happens. All we want is to make the product can hit the market as soon as possible and make sure that the running services are stable.
The role of cloud engineers, as well as cloud-related knowledge, has changed from "nice to have" to "must have" in Mekari and MoneyForward organizations.
Q: What will happen if company dont have cloud engineer?
Everything could go wrong, maybe the product can't be released to the market, or it take a long time. Even if it can make it to the market, it can be super fragile because no one maintains service, install updates, patching vulnerabilities, handle when the service got incidents, heavy traffic. Things can go wrong in so many ways.
Q: Is cloud computing the same as automation or is it a part of automation?
Automation: a solution to get rid of repetitive tasks.
Cloud computing: is a solution to general things, includes repetitive tasks. For an example of automation in the cloud, back in old days, when we have to repetitively click on the UI to provision a resource, nowadays we write it to a script and tell the cloud to provision it, it's the idea of Infrastructure as Code. Because humans can easily be prone to error. Another use case might be automatically running backup or update, the idea of cron job.
So we do have automation in the cloud but other than that, the cloud has many other solutions as simple as sending mail or providing storage. Cloud computing is more general and broader than the usage of automation.
Q: Cloud Computing concerns & issues?
From MoneyForward, the issue was the operation. Previously our infra team was only 8 people, which was only a few percent of all developers. The operations and management of all services are taken by a small number of people while the number of services keeps increasing. Requests, consultants to infra team keep increasing while the number of employees is not. It became difficult for the infra team to respond quickly and became some sort of bottleneck.
That's why MoneyForward adopted a multi-account configuration, the idea is that we assign an AWS account to each developer team and give them more freedom to handle resources. By expanding the areas that the developer team can touch, the motivation for development increased and the awareness of operation has also increased.
As a result, in developer team must have at least 1 member who has basic knowledge of the cloud, can build containers using Infrastructure as Code, Terraform. So MoneyForward organizes lots of training, hands-on, provides courses from AWS instructors. I, myself as a developer also attend a lot.
Sometimes the company may not adopt cloud and use on-premise (managing the physical server by themself rather than using the cloud). For example in Indonesia maybe this is because the industry for that company is required to comply with conformal regulation or the company doesn't trust a third party - the cloud provider. This might be one of the concerns but otherwise, every company should consider using the cloud since the benefit of using the cloud is much more than on-premise.
Q: What it takes to be a Senior Devops ?
In Mekari, Rudy started his journey as a software engineer like me but decided to change to Devops engineer since Mekari itself is open for the employee to changing career path opportunities. As for what is needed to become Devops, well it's cloud knowledge obviously, building CI/CD Pipeline, automation, setup monitoring and alerting, and also a good communication skill.
Q: Why someone would choose a career as a cloud engineer?
The cloud engineer demand is huge because every company is moving to the cloud since maintaining infrastructure by ourself is difficult, expensive, and time-consuming. Being a cloud engineer is very promising if we take a look at most big companies like Oracle, Alibaba, Tencent, and many others. They are creating their own cloud service provider business. Why would they bother to create those services if the demand is low right? This is proof that being a cloud engineer is a good career.
Q: Learning About Cloud Computing for Tech Young Stars
People may think that cloud computing provides us with all the solutions already, we just need to mix it, learning the configuration. But it's not true, we still need basic knowledge such as computer network, understand the OSI 7 layer model, TCP/IP, then have experience with Linux/UNIX OS, bash. That will be very helpful when you need to trace the errors etc. If you study computer science as a major in college you might already learn this. So don't skip class. I skipped a lot and I so regret :)))
Then you should have experience in cloud provider services. There is a lot of courses on the internet but first, I recommend learning from the cloud provider that you will use, either AWS or GCP or Azure because they have the latest update about their services and chances are, you gonna use their product in the future anyway.
Almost any major cloud has a free plan for students, small businesses. Just open an account and play around with their services. Another option would be to learn from Youtube since it's free, it's would be the cheapest option or buy an online course, it can be as cheap as 10$. If you have more money to spend you can try Bootcamp, you will have a mentor that can guide you. Students can apply for an intern at cloud engineer position to get further experience.
Besides hard skills, soft skills such as communication are also important because being cloud engineers we are also collaborating with other engineering divisions.
Q: Cloud Computing in 10 years?
In the past years, many new terms about Cloud Computing emerged such as the term Devops, Cloud Native. In the future, cloud gaming, smart home, smart city might be common things. New ideas and businesses come up every day and we need solutions to deliver them to the user.
If new business wants to truly keep pace with a changing world, there is no question that cloud computing is a game-changer for any business, it is a fast and cost-effective way of building services for many businesses, both big and small. As the internet gets more popular so too will cloud computing. That's why we believe cloud engineers will always have a critical role and are always in demand.
Q: The benefits of the microservices is still far fetched and might slow down developement. Should I build a monolithic at first and start segregate the services down the line?
It depends on the resources you have and the product you are making. For a large company, split teams into multiple teams, dividing a big product into microservices can speed up the developement and deployment. Since our services are separated, we can scale easily and isolate the failure to a single module. However, for a small company or the product might be as simple as a prototype or a landing page, building microservices seem overkill. It's too complicated and you should start from a monolithic. Then if it's promising you should begin to consider separating it into microservices.
That's exactly MoneyForward's use case. When we released our first service MoneyForward ME in 2012, it was a monolithic application. We just want to quickly validate our idea to the market and it turned out very good. Then several services were released however they shared a common platform, gradually it became a tightly coupled system, the development speed was slowed down and the risk of failure was high. So in early 2019, we decide to move the system to microservices architecture with Docker container as a loosely couped form.
In conclusion, if you have the resources and you expect high traffic in your product, consider microservices. If not, build a monolithic at first then separate it to microservices.
Q: Which Cloud Engineer roles is the most difficult and has a high entry barrier?
This is a very broad question so we will narrow it down. From the monitoring, maintaining perspective, the most difficult role would be a Site Reliability Engineer. They need to ensure future delivery, keep up with the number of users, track their uptime to make sure the application is stable, testing the performance. From a building solutions perspective, Cloud Architect might be a challenging role. They need to have a broad knowledge and have to think of a solution that not just works but works correctly and fast, regarding development speed, scalability, security.
Q: I have CS education on System Virtualizations, what would you suggest for me to enter the career?
Virtualization and Hypervisor are the key technology of how cloud computing works. You have a really good foundation already. However, your starting point doesn't necessarily mean you need to follow a fixed career path. You should figure out what you interesting in most. If you are interested in how cloud computing works and want to build one. Keep learning about Virtualization technology, apply for an intern at companies that are building their own cloud. Eg: Amazon, Oracle, Alibaba, Tencent. Or if you are interested in thinking solutions to solve business problems, you can learn to be a Cloud Architect, Solution Architect. Or if you are interested in programming, learn programing language and become a Cloud Engineer like me or Rudy.
Cloud Engineering has become one of the most promising fields in today's tech scene. There is no question that Cloud Computing is a game-changer for any business, it is a fast and cost-effective way of building services for many businesses. In the future, cloud gaming, smart home, smart city might be common things. New ideas and businesses come up every day and we need solutions to deliver them to users. Cloud Engineers will always have a critical role and will be always in demand.
This is a practical topic and close to what I'm doing day-to-day basic so I'm really excited to talk about it. To be able to discuss with experienced speakers was so valuable, I learned a lot from Mekari use cases. Actually, to be able to be a speaker, I have to prepare for the content, think, and sort my thought out of my head in a logical way, I did learn more than what I shared. It took a lot of time but it's rewarding. Lots of things need to improve but I'm glad that I volunteered to be the speaker.
We hope you enjoyed learning more about Cloud Engineering's career, real use case, and some tips to getting started. You can watch the recorded webinar here.
This webinar is a collaboration between Mekari and MoneyForward to promote a coding competition called Indonesia Young Coders League (IYCL). Winners can brag about their rank in the IYCL National Leaderboard, jump-start their careers, and even fly to Japan for a full-time job.
We did have several Indonesia members as interns and currently, in my team, we have 2 full-time Indonesia members, all of them are from IYCL. MoneyForward always welcome more and more Indonesia member so sign up to compete right now! About IYCL: http://bit.ly/IYCL-2021 Registration form: http://bit.ly/IYCLVol2