When we (@michaelcobyburn and @SteveInJeans) started, I was keen to build something which would "scale". I thought "if this does well, it's going to have to cope with the demand". We had no money and we all worked full time doing other things.
-
-
Prikaži ovu nit
-
As if things weren't challenging enough, I thought I'd also take the opportunity to learn some new things. Enter
@nodejs "microservices" on@kubernetesio on@googlecloud. Oh, and we had to launch in time for National Coworking Day (18th May) which gave me less than 5 months...Prikaži ovu nit -
Kubernetes would definitely help with scaling, so why not?! Next thing, how do I structure the project in a "microservicey" way?
Prikaži ovu nit -
I did some reading and I decided to use the concept of internal microservices and public microservices. I was already familiar with
@nodejs, so I stuck with that as my runtime.Prikaži ovu nit -
Internal microservices: responsible for interacting with the databases and external services. Public microservices: responsible for serving clients, business logic and interacting with the internal microservices.
Prikaži ovu nit -
Why this way? It meant I wouldn't have to rewrite database access logic for every public service which required data. I could centralise database access and that way, if we ever changed databases, we'd only ever need to update a subset of services.
Prikaži ovu nit -
The next thing: how do I get the public microservices to talk to the internal microservices? Remember I wanted to learn some new stuff? Why not add a service mesh in the form of
@Linkerd into the mix?!Prikaži ovu nit -
When I started learning about Linkerd and service meshes,
@grpcio and Protocol Buffers kept on coming up. A strongly typed, efficient communication medium between the server and its clients. Sounds cool, but I don't need to learn that too. Narrator: "He used gRPC too..."Prikaži ovu nit -
So, just to recap, I'm now dealing with
@kubernetesio on@googlecloud running microservices written in@nodejs using@grpcio for inter-service communication and running@mongodb and@elastic deployed using open source@helmpack charts
Prikaži ovu nit -
Oh, and since I knew I was going to be writing a native iOS and Android apps (we'll cover more on this later), there was no reason why I couldn't use gRPC to communicate with the public microservices!
Prikaži ovu nit -
I've worked at a startup before where the focus was more on delivery and less on quality (totally my choice, by the way). I decided that if I was going to start something new, I was going to do it properly: unit tests with 100% code coverage and integration tests.
Prikaži ovu nit -
This meant I needed to set up a continuous integration/continuous delivery platform. We were already using Kubernetes, so it made sense to set up our own CI server on there. Note: it never makes sense to spin up your own CI...
Prikaži ovu nit -
After a couple of months of extremely hard work, it was time to start thinking about building the apps. Like I say, I chose to build native apps. Why?
Prikaži ovu nit -
My only real experience with hybrid apps was an Ionic app which used Angular 1. Performance was terrible. From what I understood, React Native apps had performance issues and some "native" functionality had to be compromised on. Not for me.
Prikaži ovu nit -
Thankfully, I had some friends who were willing to help out! Getting the native apps setup to use gRPC was actually pretty painless
Prikaži ovu nit -
I had to figure out how to get Linkerd setup to act as an ingress and eventually, I managed to find a configuration which worked well. Everything was all great until it wasn't. The server stopped responding to requests!
Prikaži ovu nit -
It turns out there was an issue in Linkerd (https://github.com/linkerd/linkerd/issues/1958 …) where it gradually stopped routing traffic to the right places. A workaround: restart Linkerd every now and then...
#turnitoffandonagainPrikaži ovu nit -
Okay, 3 days to go and we're generally functional, the Android app is done and in the Google Play store. The iOS app is done but failed approval... because of the same issue
#fmlPrikaži ovu nit -
I restart Linkerd and resubmit the app
It fails approval again, this time because the app required users to sign up before they could use it. Okay, fine, I've not slept properly in a few days but sure, I'll change some things so searching for spaces can be done anonymously...Prikaži ovu nit -
I resubmit the app at 8.30am on 17th May, the day before National Coworking Day. Bearing in mind it takes around 24 hours for App Store approval to happen, this was make or break...
I went to sleep that night and slept like a baby (because of sleep deprivation)Prikaži ovu nit -
I wake up the next morning, the morning of National Coworking Day. SUCCESS! THE APP HAS BEEN APPROVED
The first booking comes in and we are elated! 5 months of hard work, late nights and a lot of learning have paid off!Prikaži ovu nit -
National Coworking Day is a success, the day is over and I’m now at the party afterwards. Here’s a still taken from a video. As you can see, I’m in need of some self care…pic.twitter.com/ijsvu86oYy
Prikaži ovu nit -
Since then, we’ve reworked things, improved things, simplified things and we’re in a much more stable and sustainable place. We’ve raised funding, we’re working on
@desanahq full time and we’re growing! Come and join us
https://desana.io/careers/ Prikaži ovu nit
Kraj razgovora
Novi razgovor -
Čini se da učitavanje traje već neko vrijeme.
Twitter je možda preopterećen ili ima kratkotrajnih poteškoća u radu. Pokušajte ponovno ili potražite dodatne informacije u odjeljku Status Twittera.