I first heard about Michal Šimon (Founder and CEO of Codeac.io.) from my friends in Ostrava. Some of them went to elementary school with him. They all admired Michal’s lovely personality and his achievements. It is very impressive that someone from that small industrial city made it into Silicon Valley and founded his own startup. My colleagues and I were excited to get a chance to have him at the Cloud Native Meetup in Prague. where he talked about serverless machine learning at Codeac.io. What Michal thinks about “buzzwords” such as serverless or cloud-native? And how did he get into software engineering? Read along!
How did you get into Software Engineering? Why did you decide to work in this field?
When I was little, I wanted to become an astronaut. My dream was to build and fix spacecrafts but those are hard to come by so I started fixing computers first. Later I realized I can make more impact by building software and so I learned how to program. Shortly after I started my freelance career as a web developer and joined several startups to learn more.
Was (or still is) working in this field challenging for you? Why?
Challenges are exactly the thing that I'm always looking for. After finishing university I bought a one way flight ticket to Silicon Valley and started searching for a job. I did around 25 interviews in a week and a hackathon over the weekend and ended up as a DevOps engineer in an online dating company. During the year that I spent there, I learned one important thing: In the 19th century, there was the Golden rush. The most successful ones weren't those digging looking for gold, but those who were selling shovels and strainers. Not many things have changed since, just the gold miners were replaced by developers. We have therefore decided to create a gold strainer for developers and called it Codeac.io. You can picture it as a spell-check for programmers in the cloud. That's the biggest challenge so far and I love it because it's pushing me and my whole team forward.
When was the first time you tried working with public cloud services? How did you like it?
Experimenting with new technologies is essential for every good developer. I tried Google App Engine in the early days but haven’t used it for any actual projects.
I realized the real use-case of public cloud the moment I experienced a traffic peak on one of my pet projects. The virtual server had performance issues and there was no easy way to fix it. I could just watch the huge latency and angry comments from users. Right after this disaster, I registered my AWS account and started experimenting with load balancers and EC2s. After a month or two I was able to migrate my current workload to AWS and finally sleep well.
Do you think that Cloud Technologies will grow in the future?
I believe more and more companies will migrate their workloads to the cloud in the near future. However, I hope they will adjust their architecture as well and not run the same VM in the cloud instead of their basement. Imagine how many resources are globally wasted by low utilization of the on-premise hardware. Most companies have their traffic peak over the daytime in their timezone but most of the servers are running overnight anyway with barely any utilization. Cloud providers can offer those extra resources cheaper and utilize them way better instead.
How did you like Cloud Native Prague meetup?
I was impressed by the topics discussed on the meetup and friendly atmosphere. Starting a conversation with anybody was so easy and people were willing to share their knowledge and learn something new as well. International guests are bringing a lot of important experience to the table as well, and that is just awesome.
What does “Cloud Native” mean to you?
First of all, I feel that it's just another buzzword which is a little bit overused these days. On the other hand, we have a unique term to google when needed. Cloud Native for me means we have a small unit of business logic that we can pass to the cloud provider with a specific configuration and it will take care of scaling, logging and charge us as accurately as possible for the used resources.
Did you write any cloud-native software yourself? What was it?
Yes, Codeac.io is 100% serverless! I would even say we believe in the “serverless first” approach. In a nutshell, if we can run it serverless we will. If not, we'll manage a container to run it. If it’s still not enough, we'll put it on a VM and so on. Usually, the first option and sometimes the second one covers most of the use cases. However, there is one case that's even better. Don’t write the code at all, just configure existing services together. That’s why we love to leverage the power of AppSync and write just a GraphQL schema with a few resolvers. Less code means less maintenance and results in better sleep.
Can applications be "cloud-native" even when they don't actually run in the cloud? Can you elaborate on that?
This is a perfect question. Some of our customers need an on-premise solution and here comes the magic of serverless. We're already able to run Codeac.io in Lambdas so throwing the services into containers and orchestrating them is a dead-simple task. It is, of course, more work but the application is already well prepared to run in a way more strict environment so loosening up the constraints is a piece of cake.
Do you think it is possible for companies who are not “digital native” with many different, monolithic legacy systems and teams to become “cloud-native”? How would you approach this kind of transformation?
Especially with services such as AppSync or Lambda they can focus way more on writing the important business logic instead of managing operating systems and dealing with Nginx SSL configurations.
It’s not possible to get rid of the legacy systems overnight. However, every time there's a request of a bigger change on a specific part of the system, separating this logic into a microservice and hooking it back to the system with an API is a great long term strategy on how to modernize the stack. In fact, many Codeac.io users are in such a process and using it to unify the code quality standards across their application as well as Infrastructure as Code.
There are a lot of new terms and buzzwords around cloud-native topics. E.g. serverless, DevOps, NoOps, you name it. Do you think that these terms are actually useful or are they just a marketing cliche? (As Charity Majors often says - “Serverless is a lie - it is just a fancy term for function as a service or a rebranding for APIs and platforms''.)
This is absolutely right and they are used way more than they should be. Shame on me using them in here as well. On the other hand, I like them as identifiers and filters in a huge pool of information called the Internet. It’s tricky to find the right piece of information you need in the middle of the night fixing a critical bug. Sometimes those buzzwords can be a helpful shortcut if you know enough of them.
Here in the Czech Republic, we are struggling to get women speakers to the stage. In your opinion, what are the reasons for such a small number of women working in technology in 2020? Do you think it is a global or just an “eastern European” problem? How could you personally help with this problem?
I would not say it is a global problem for sure. The western trend is definitely bringing way more females into tech. Especially in Silicon Valley, there are plenty of talented female founders, speakers, developers, and tech students. They are also way more social on meetups than some of the guys. Sadly, the stereotype of the school system and society is just not motivating women to become tech experts too much. However, our team member Radka is a fantastic example of the progressive attitude towards working in technology and we hope to see more women following this trend in the near future.
Thank you Michal for your great thoughts!
See you at next Cloud Native Prague Meetup.