Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Peter (00:00):
What's up, everybody?
Welcome to the podcast. We have
another episode for you heretoday. We are gonna be talking
about choosing the right backend for your applications, which
is gonna be a difficult subjectand certainly one that folks are
gonna have opinions about. Hey,Geoff.
How you doing? How's your weekbeen? How's your couple of weeks
been as we've been regroupingand busy?
Geoff (00:22):
They've been pretty good.
I've been working on a number of
different projects, none ofwhich have shipped. But okay,
you know, that's how it goessometimes.
Peter (00:28):
Oh, well then, life as
usual.
Geoff (00:30):
Of course.
Peter (00:31):
You know? It's like I
could ship or I
Geoff (00:34):
could not ship out with
the idea.
Peter (00:37):
Or I could
Geoff (00:37):
ship one thing or I could
work on three things and ship
none of them.
Peter (00:40):
And and fill successful
either way. Exactly. So I've
kind of had a similar thing. Sothose of you, paying attention,
yes, the Groundhog level isstill active on endless hurdles,
because I haven't shipped anupdate because no good reason
really. I fixed the bug and Ijust didn't you you know
(01:02):
sometimes you're like, it's notbad enough that I wanna ship a
whole new version just for thisone thing.
Right? So, I'm kind of the samething. I got a few things going
on. None of them are shipped.Maybe one of them will ship at
some point.
So there we go. Alright. Let'sdive into this. So, yeah, we are
we are talking about back endsfor your application here. You
(01:24):
know, let's start by definingwhat we think back end is and
make sure that we're both on thesame page.
For me, the back end is anythingthat's outside of essentially my
app. Right? My app bundle. So itcould be things, you know, very
much like some APIs that I call,a database, some page of content
(01:48):
that I pull in. To me that isall back end support for making
the app do its thing.
Right? That that's kind of mydefinition of a back end. What
what do you think of that? Whatwhat's your definition?
Geoff (02:02):
No. Sorry. Yeah. No. I
think that's definitely a good
definition of it.
You know, you kind of have frontends and back ends to your app
as a whole. But I think whatwe're talking about is more like
what is, you know, a client typefront end to your app and a
server type back end to yourapp. You're talking about
something that your app or yourproduct communicates with that
(02:25):
is separate from the app itself.And so even if you're shipping
like a web app, for example,you're gonna have the JavaScript
client side, and then you'regonna have some other server
side thing. And for the purposesof our definitions, that is your
back end.
So the first thing that I kindawanna bring up is with that
(02:45):
definition, your app may notactually need a quote, unquote,
back end. You may have somethingthat is a entirely client
focused experience. You know,you have some kind of
productivity tool that is a solocreation thing. You may have a
game that doesn't havemultiplayer or leader boards or
anything like that. It may bepossible for you to have an app
(03:07):
that doesn't have a back end atall, and that's okay.
Like, you don't have to go andbuild something with a server if
that's not what your app needs.And it is something that is
definitely required for certainkinds of experiences. Like I
said, multiplayer games, youkinda need to have some sort of
back end if for nothing else toget your players to communicate
(03:29):
with each other. But it's verypossible to build apps that
don't have a back end by thedefinition that we've been
using.
Peter (03:38):
I agree. Couple of
examples here. You know,
anything that you store on thelocal file system on your
platform of choice where yourapp is, you know, I don't think
of that as a back end. It's justyour local file system. So using
that game is is a good example.
Right? If I'm gonna store someplayer preferences or high score
(04:00):
something like that and I'm justgonna store that in some kind of
file on the device itself, youknow, I don't tend to think of
that as a back end. That's justan integral part of the
application, right? So that'sthat's how I look at that and by
the same token, like you say, ifit's not required to call out
(04:22):
anywhere for anything outside oflet's say a device then that's
pro you know, not a back end.Right?
I wouldn't call talking to APIson an OS, for example. You know,
back end. Right? That's justpart of the the system layer is
how I see it. So assuming thatyou do need some kind of back
(04:44):
end, whatever your definition ofthat may be and the requirements
for your application, let's talkabout using existing skills
versus new skills and and youknow potentially someone else
doing it for you.
I am very much an advocate for,you know, now is not the time to
go do something new unlessthere's a reason. Right? So if
(05:06):
I'm in the throes of making anapp and I'm getting ready to,
you know, trying to shift thisthing, now is not a great time
to say, you know what? I'vealways wanted to go and learn
how to do a node server. Nah.
Probably not a good point placeto do that. You will end up
going down that rabbit hole,right, and then you're gonna get
involved with all of that andthe next thing you know you're
(05:27):
not working on your app. So Idon't think using new skills
there is necessarily the way togo, but I I I know you've got a
slightly different viewpoint onthat. What what do you think
about that?
Geoff (05:40):
I think by and large, I
agree that this is not, you
know, you don't wannanecessarily jump out and be
like, okay. I'm an expert atdoing this, and I know how to
build this front end the waythat I want to. And now I'm
gonna go grab somethingcompletely different. Just, you
know, a bill put even more workon getting something out the
(06:00):
door, getting something to shipwhen, you know, what you should
be focused on is building yourapp. Now with that said,
definitely focus on using theright tool for the job.
If you are somebody who is isbuilding an app in a language
that doesn't have a great serverecosystem as it is, you probably
(06:22):
do want to look a little bitoutside of your area of
expertise. If you're building anapp in some kind of game maker,
a game engine like Godot, forexample, you probably don't
wanna try to build a web serverin that. If you're working on an
iOS app, but, you know, you'reold school and you're still
doing an objective c, you know,I don't think there's a lot of
great objective c serversolutions out there. You know,
(06:45):
Swift has some great serversolutions. We've talked about it
on the podcast before.
You know, Python, Ruby, Node.Js, all of these, there are
systems out there that have muchbetter ecosystems. And I would
say, find one close to thingsthat you know. Find one that's
simple and which there's a lotof expertise online for, and go
(07:07):
look into something like that.To that same end, like, make
sure it integrates with thekinds of things that you want to
do.
You know? If you are you if youknow you need a database, like,
use a language that not just hasa server ecosystem, but also has
connections to that database,for example. I wouldn't go
looking at a language that has agreat server ecosystem but
(07:30):
doesn't have a whole lot ofother things.
Peter (07:32):
And I and I wanna be
transparent here. You know,
hopefully, by now, folks knowthat I'm I'm an advocate of
continuous learning. Right? SoI'm not saying, hey, you know
what? If there's an opportunitypresents to go learn something
new or some aspect of somethingyou've not done before, go do
that.
I'm I'm just saying that now isprobably not the best time
(07:54):
because you're already trying toship one product or part of a
product and, you know, theseback end systems and things like
that, they support that. Right?And they shouldn't be projects
unto themselves unless there's areason to. So I do agree with
you that, hey, you know, if anopportunity presents and it's
(08:16):
not gonna hurt you in any way,go for it. But, you know, don't
don't jump off into the deep endand next thing you know is like,
oh, I got problems everywhereand, you know, I got this back
end that I don't know and, youknow, stuff like that.
Certainly, a good example Ithink for there is databases.
Right? I mean, that's anotherone where there are endless
(08:37):
options but there's also manydifferent ways these things
operate and, you know, learningto a database three different
ways is probably not the bestuse of your time while you're
trying to ship this product. Sowith that, moving on, let's talk
about possible options. Andbefore we dive into these
(08:58):
because I I know there's gonnabe those folks out there, no
this is not an exhaustive listof everything.
We are just gonna list what wefeel are some of the more common
ones. Certainly ones that havebeen used a lot so you will find
good support out there, goodcommunities of which again I
(09:18):
cannot stress enough in myopinion. Finding good support
documentation and communities isvital in just about anything you
do that's going to ship toproduction. So, with that said,
right, you know, let's let'sstart with a couple of obvious
ones here. If you're on an Appleplatform and you're developing
for an app an Apple platform,two very easy ones to get
(09:40):
started with that areessentially connected at the hip
as it were, CloudKit and iCloud.
Right? I use those in one of myapps and it works great for me.
I I know other people have otheropinions but it's pretty darn
easy to get working with it andand that instantly gives you
(10:01):
cross device support. Right? Sofor me, you know, that that
that's a great one in there.
There are also plenty ofplatforms out there that you can
take advantage of. One of themost well known ones perhaps is
Firebase. It's very popular. Iuse it in in some apps and I'm
very happy with it and Firebaseis a collection of services
(10:23):
really. People tend to think ofit as just, you know, one or two
things like an online databaseand and things like that, but it
actually is a collection ofservices.
So if you want to go that route,you could use Firebase for a
real time database. You coulduse it for example in a real
time chat application. You'vegot crash analytics, you've got
(10:45):
performance analytics, all thesekind of services in there as
well and it just works out ofthe box, right. Again, very well
documented and it works withmany different languages. They
have pre built libraries for formany of the the most popular
options out there.
For example, I've used it withAndroid, I've used it with
native iOS and I have and bythat I mean Swift and Objective
(11:07):
C and I've used it with ReactNative as well. So and and
plenty of folks use it for webapps. So Firebase is a good
option there. There are, ofcourse, many other services, you
know, we could start streamingoff like for example, you know,
Amazon has some, Microsoft hassome, so on but those are the
some pre built ones. However,there is another route you can
(11:30):
go and if you want to have somefun doing your own, there are a
few options.
Geoff, you wanna name a few ofthe popular ones?
Geoff (11:37):
So at the very top level
of it, you've got building your
own thing from scratch. And likeI said earlier, there are a lot
of different languages that arevery good at this. Probably the
most popular options out thereare Node. Js for the JavaScript
ecosystem, and then there are acouple of different server
frameworks for the Pythonecosystem if it's what you're,
(11:57):
familiar with. But, yeah.
Just basically taking a serverframework that exists out there
and building all of your ownfunctionality into it. And this
obviously gives you the mostfreedom. You're not limited to
the services that a company likeFirebase provides, but you're
also responsible for all ofthis. If you need to connect to
a database, well, you'reresponsible for running that
(12:19):
database now as well. So havingso this is really building
something from scratch andreally supporting your own full
service ecosystem on your own.
Peter (12:32):
I do wanna highlight one
thing that you said there that I
think is very important, and Ithink folks shouldn't
underestimate. Anytime you rollanything for yourself, whether
it's front end, back end,whatever, you are responsible
for the maintenance and toensure that it's running and and
that's super important. If yougo with one of these pre built
(12:55):
options, there's a lot less workfor you to do. For example, you
know, Firebase is not gonna godown and you're gonna have to
fix it. Right?
That kind of thing. If your ownback end that you you created, I
mean, more power to you. I'm notsaying you shouldn't do it, but
if something goes wrong with it,you're the one that's got to
(13:15):
figure it out. Right? Becauseyou own it and you built it and
and you got to solve the theproblem, which is something to
think about because especiallyif you are building an app for
somebody else and you build aback end to go with that,
they're gonna expect you tomaintain that.
And and it sort of is on you tomaintain it. Right? It's
(13:35):
unlikely you're gonna have acontract that says I'm gonna
build this thing and walk away.
Geoff (13:39):
That's right. I agree.
Like you said, Firebase and any
of these third party systems,you know, CloudKit the same way,
these are things that otherpeople are going to maintain,
and, you know, it it it's not a% perfect. They may go down from
time to time. You know?
Sometimes things happen and, youknow, but it's not your job to
(14:00):
maintain them. If it is your jobto maintain them, you have to
make sure that you're workingwith a service that is reliable.
And so, you know, probably don'thost this on the Mac mini you've
got in your basement. If you'vegot dogs, you know, they're
gonna fall over the power cordand, you know, there's your app
down. You probably want to gowith a reliable hosting service.
(14:23):
You mentioned earlier, AWS,Google Cloud Platform. There's a
lot of these, services. Thereare also some smaller ones out
there, like DigitalOcean,Linode, Hetzner. And if you're
more familiar with hosting yourown service, if you're, you
know, pretty familiar withrunning, like, a Linux back end
thing, those can be greatalternatives as well. But, yeah,
(14:44):
definitely use some kind ofreliable hosting company.
You don't wanna be going intoapp review with Apple and, you
know, your service isn't runningbecause they're gonna boot up
your app and they're gonna go,it doesn't work, and they're
gonna reject you immediately.
Peter (14:57):
So I'm hoping that the
takeaway here is now is not the
time to get too experimental.You want to really be going with
something that's tried andtested and been out there.
Right? Preferably, as we'vesaid, hosted or maintained by
some nice big company who deeplyvested in making sure these
services that they provide youare running and therefore, they
(15:19):
are running for your applicationand hopefully your customers. By
all means, go learn new things,you know, experiment with them.
But when you're going toproduction, I personally don't
feel now is the time to to sortof test my limits. I much rather
have something that I can focuson my app and know that the back
(15:40):
end is good and solid and nothave to worry about it. So I
think that about covers it here.Geoff, where can people find
you?
Geoff (15:49):
As always, I'm on
cocoatype.com for links to
wherever I'm doing things now.And as always, you can find me
Peter (15:56):
at peterwitham.com.
That's it, folks. We will speak
to you in the next episode.