>> Tune into the very first episode of
DevOps for Mobile Developers
where my best friend in the entire world,
Abel, joins me to tell us what is DevOps.
[MUSIC]
>> Hey, everyone.
Welcome to the very first episode
of DevOps for Mobile Developers.
I'm James Montemagno.
You may see me on here on the Xamarin Show,
and I have my best friend in the entire world, Abel, with me.
Abel, how is it going?
>> Great. So happy to be your best friend now.
>> Best friend in the entire world.
>> Ever.
>> Yeah.
>> Now, people may know you from all things DevOps basically.
>> Right, so I'm all about DevOps.
I've done shows on the DevOps Lab, Azure Fridays, etc.
>> Yeah, and people behind us maybe
seeing there's like a Xamarin On.Net.
There's kind of like a for Xamarin On.Net collaboration
because Cecil got us together.
He said, "Hey. We did a great DevOps for ASP.NET developers.
You should do that for a mobile development."
Do you want to talk about that series that you did?
>> Absolutely. So we wanted to give like an intro to what is DevOps
and why is it important to ASP.NET developers,
and how do they get started.
>> Yeah.
>> And so when Cecil brought up mobile,
I was like, this is a great idea because I've [inaudible] in mobile,
but not a whole lot, right?
So my first thought was DevOps is just DevOps,
it's all the same, right?
But the more I dug into mobile,
the more I realized there are some very specific use cases
that I sort of know how to solve but not really.
>> Yeah.
>> So when he said do you want to talk to James,
I was like, "Yeah, let's do this".
>> Yeah. So this series is to be super fine
because I'm almost all the time
Mobile Mobile Xamarin Xamarin all the time.
>> Yeah.
>> A little bit of DevOps.
I got my way in there,
but I think they mean different things to us
and there's a lot of different tools that we offer.
So this series is going to be, I think, six or seven parts.
We're going to talk about today just what is DevOps?
So what does it mean for mobile development?
What are the tools that we offer here at Microsoft?
But then we're going to go into continuous integration,
release, testing, UI testing.
Just completely different than
really when we think of web development.
I think you talked about unit testing
and some maybe Selenium test
but mobile development is really crazy different.
So I'm excited about that one
>> Especially all that distribution stuff, right?
>> Yeah.
>> You're not just pushing to a server or a slot or something.
>> Yeah.
>> I can't wait to dive into that.
>> You don't have a magical staging environment.
Oh, just put it in that slot over there. No big deal.
You have to worry about provisioning profiles, key source,
and every single operating system and vendors different.
>> Yeah.
>> So we're going to dive into that,
and then also, the final biz,
we're going to take the apps that we build, put them in the store
>> Nice. End-to-end.
>> End-to-end fully.
>> Cool.
>> So let's open up.
This one is all about conversation: what is DevOps.
So, what is DevOps?
>> So for me DevOps is something very specific, right?
Probably, because I worked for Donovan.
So DevOps to us is the union of people, process, and products
to enable the continuous delivery of value, right?
So the key here is continuous delivery of value.
>> Okay.
>> So that's what it's all about.
When I think about DevOps for mobile,
my first thought was same thing.
I have a mobile app.
I want to make sure I continuously deliver that
updates and value for my end users.
Then I think about like my iPhone apps,
it happens all the time, right?
Every day I wake up, apps are updating.
> Yeah, I agree.
And in fact, I think that in the world of web,
what you show for ASP.NET,
in mobile is exactly the same.
The differences with websites,
you don't see that there's updates, right?
That just continuously happen.
When we talk about Azure DevOps,
they're releasing all the time, right?
They have big releases
but they're literally releasing updates all the time.
>> New updates every three weeks.
Bug fixes, multiple times a day.
>> Which is crazy, multiple times a day.
Imagine if you had a mobile app update multiple times a day.
>> Yeah.
>> That would be kind of bananas.
>> Right.
>> But yeah, it's the same process though
because I mentioned I used Square Cash to do like,
inside of our household, we have monthly expenses,
and we just Square Cash back-and-forth,
kind of like PayPal but with no fees.
I have told story when I'm on stage talking about DevOps which is,
I woke up in the morning, I had an app update.
I went to work, I came home, and had another app update
within a 12-hour time period.
Like somebody, maybe, broke something and then fixed it, right?
>> Right.
>> They learned -- somehow, they monitored their application,
and deliver that update,
and you can't do that by just e-mailing files around.
It doesn't work.
>> Right.
>> Which is what I used to do, by the way.
>> So that's one of the challenges of mobile, right?
Like if something goes wrong, how do you know?
I remember I used to get those things with my output crutch,
it would say, "Press this button to e-mail the developer."
>> Yeah.
>> I never did that.
>> Yeah.
>> Although I knew I should have.
>> Exactly, and that's the thing is,
you can give ways to give your users feedback.
But if you're not continuously delivering,
knowing value but improving your product,
you're getting those one-star reviews.
>> Right.
>> It's hard, in mobile is almost even more important
because there is that app store there
where people can go and just give you a one-star rating.
>> Yeah.
>> I don't want to bag too much on my hometown, Seattle Sounders,
but a few years ago,
they did an update to their mobile app
where they were parsing date times wrong.
>> Oh man.
>> It would crash on startup.
>> Painful.
>> You know how long it took them to fix it?
>> How long?
>> Two weeks. That means the app crash for everyone for two weeks.
>> Did they have any remaining customers after that?
>> I mean, not until the next season.
I mean, it was hard it was mid-season too,
and you saw the absolute rating go down.
They've recovered and you can
tell that they're starting to get some processes.
I don't work with the Seattle Sounders.
I am a season ticket holder-
>> Right.
>> -in which I need the mobile app to work.
>> Yeah.
>> So it's one of those things where it's really important that,
as a developer, I want to push code
and I want things magically to happen.
>> Yeah.
>> So maybe let's get started with ASP.NET,
with the series you did,
what were the steps of DevOps there?
Where was the value being added for everybody?
>> So remember the key is continuously delivering value.
>>Okay.
>> We looked at it in a holistic way
so we looked at absolutely everything.
From the moment you start a project,
you need to be able to track your work somehow, right?
You need to be able to figure out these are the stuff
that we're going to do for this particular sprint.
>> That's right.
>> So we need to be able to track our work.
We need to be able to have a place
where we can store our source code.
>> Yeah.
>> Not a thumb drive, hopefully, or a shared drive.
We need a source control system of some sort, right?
So we talked about the different types
of source control systems you can use,
whether it's Git or centralized version control system.
Then of course, there's a portion that everybody thinks about,
which is CICD, right?
>> Yeah.
>> If I check in the code,
it needs to automatically kick-off builds
and run all of my unit tests,
or run whatever type of tests that I have.
Then if everything looks good,
I need pieces that will pick up those bits
and start deploying them through my environments,
my dev environments, QA, all the way out into production.
>> Yeah.
>> And then once it gets into production,
it doesn't end there either,
because like you're saying,
even with a web app,
we need to monitor our apps to figure out app up or down,
app performing well, and what are users doing in my app,
especially those crash reports, right?
So if we know those things,
that can help us figure out are we delivering value?
>> Sure.
>> Because that's ultimately the key.
Not just pushing out new code or new features,
we need to deliver value.
>> It sounds like the value here is not only for the end-user.
It sounds like it's for the team too,
is that correct when it comes to DevOps?
>> Definitely, right?
So well, of course, we want to give our end-users the value.
But if you adopt DevOps best practices,
for the teams, it's hugely beneficial as well, right?
Let's figure it out.
Number 1, are we doing the right thing, right?
So about 90 percent of the time when
I'm writing code or adding a new feature,
I think I know what our customers want,
I think my idea is brilliant,
but really how do I know, right?
It's like I can interview people or do whatever.
But at the end of the day,
if I start developing a feature,
I want to be able to push it out into production,
have people start using it,
and see are they even using it? Do they like it?
If they like it, great,
I can double-down and keep on developing that feature,
and if not, I can redirect my resources, right?
Now, do another experiment.
Try to find experiment that really resonates with the people,
that really gives them value.
> Got you.
>> So it really helps the teams out
figuring out what they need to do as well.
>> I love it. What's great here is
that everything that you just said,
which was about the ASP.NET series
totally applies to mobile development, right?
You want to be saying, this is same exact thing,
but with different tools.
>> Yes.
>> Right? Some similar tools but some also different tools.
So what we're going to talk about in the series
is three specific tools that Microsoft delivers
for our developers for mobile development.
>> Yeah.
>> So the first one which we have popping here is GitHub.
You've heard of GitHub?
>> I may have heard of it once or twice. I may have a Repo.
>> I might have a Repo or 400.
>> So that's where we're going to be storing our source code.
Now, there's a lot of places to store source code.
>> Sure.
>> A lot of people that use Azure DevOps Repos,
or we just call them Azure DevOps-
>> Azure Repos.
>> Yeah.
>> Those are free, private, unlimited.
>> Free, private Git Repos.
You can have as many as you want. They're pretty cool.
Actually, inside of Azure Repos,
there are two types of source control system.
So there's Git and there's also
a centralized version control system if that's your flavor.
>> So you can kind of pick and choose where GitHub is, get base.
So you're going to get Git. There's also other ones.
You can have your own-
>> Bitbucket.
>> Yeah, Bitbucket.
You can have your own centralized Git Repository.
You could have subversion.
You could have literally a lot of different ways.
We're going to put all of our code on GitHub.
>> Perfect.
>> That's going to allow us to do things
like do checks when we push code to a branch or to the repo
and make sure that builds are passing at some point.
We'll get checks inside of it.
It's nice. All of it in there, too.
But all those features are also
available in Azure DevOps too, right?
>> Correct.
>> Yeah. So I'm just going to use because I
think since it's open source, it's open,
even though technically now Azure DevOps has opened stuff,
it's like an [inaudible] , but I do a lot of stuff on GitHub
so that's where we're going to store the code.
>> Perfect.
>> But know that everything that we're going to show you here,
one works with any mobile application no matter what technology.
We're going to use Xamarin apps
because I'm a .NET Xamarin developer. It makes sense.
But technically, everything we'll talk about
any mobile app, any language.
That's where we're going to store the code,
and then there's two things.
I keep mentioning Azure DevOps.
Before we get to Azure DevOps,
I want to talk about App Center.
>> Cool.
>> Visual Studio App Center,
I sort of think of it as a series
of essential tools for mobile developers.
>> Okay.
>> So there are services that are
central and specific for mobile development.
When you think of Azure and you think
of all the services that are out there,
you have Cognitive Services,
and you have Blob Storage,
and you have like Apps Services, they're very broad.
You can push any code to it, right?
>> Right.
>> It could be an ASP.NET website or not ASP.NET website.
You could be talking to it in .NET or in Java or in whatever.
JavaScript, right?
Where App Center says, "Hey, listen.
There's a lot of these great services that already exist
but for mobile, there are special things."
>> Yes.
>> So for instance, you need to be able to test user interface.
So they have an entire lab of iOS and Android devices.
>> Now, when you say lab,
do you mean like a real virtual machines
or are these physical devices?
>> Real physical rack-mounted devices.
Like, I've walked them and they're amazing.
They're globally distributed and they're
just all these iOS and Android devices,
all flavors of OS', versions, and different device types.
>> Cool. So using App Center,
I'm able to run my automated UI test against
the user interface on all these different devices?
>> On all of these devices, right?
>> Very cool. Okay.
>> So they kind of give you some of the ops part of this.
I think of like the ops part of
mobile DevOps because they give you the testing,
they also give you the distribution.
We talked about really there's different app stores,
different profiles, different signing.
So App Center, they will help us distribute
to our developers to a test group of people,
a public beta or even to the App Store.
They're kind of like the gateway in a way.
>> Okay.
>> Then they also do other things like crash reporting, analytics,
push notifications, all those other things that mobile apps need.
>> Okay.
>> Yeah. So they kind of give you those ops part,
and they do offer a build service which sits
on top of Azure DevOps.
>> Right.
>> So you're the Azure DevOps expert.
So to me, I love Azure DevOps.
I'm all about it because it does all the things in it.
When you talked about all the different parts
that go into your DevOps process,
it sounds like a lot of that's going into Azure DevOps.
So we're going to use GitHub,
we're going to use App Center, but
our central everything will be DevOps.
So maybe you want to kind of give the overview
of what DevOps offers.
>> Sure. So Azure DevOps, like we all say,
it's literally everything you
need for your software project, right?
Everything that you need.
They do this because Azure DevOps basically
is a suite of five separate tools
that work together incredibly well.
>> Got it.
>> So the very first tool is Azure Boards, right?
So using Azure Boards,
you're able to track any unit of work in your software project.
So that's like, if you need to track
your user stories or your bugs or
even individual tasks or
maybe epics if you want in
your track long-term or things like that.
>> Yeah.
>> So that's a full set of tools
that lets you track any unit of work,
a full set of visual tool so you've got backlogs,
Kanban boards, and things like that.
>> Got you.
>> The next is, of course, Azure Pipelines.
With Azure Pipelines, that gives you that CICD experience.
So using Azure Pipelines,
you can build full CICD pipelines,
full orchestration and make it do
literally anything that you want it to do.
>> Cool. I like that.
>> So then there's Azure Repos,
which we touched on as well.
So inside of Azure DevOps,
you have the ability to have your source code repository.
So you've got Git Repos
and it's centralized version control system as well,
and you also have Azure Test Plans.
So Test Plans, that's if you're doing manual tests.
>> Okay.
>> So you need to be able to create your test suites and
run them and track which ones have passed and failed.
That's what Azure Test Plans can give you.
Then finally, there's our Azure Artifacts, right?
So it's an artifact repository,
where you can store your NuGet packages,
or depending on which technology you're using,
you can store your different packages out there.
>> I like that. In fact, every single bit
of this applies to mobile development.
>> Cool.
>> It's kind of crazy, right?
>> Yeah.
>> Like often, I'll go in and I'll be like,
"I just need pipelines," like that's good.
>> Yeah.
>> But you know what else I'm doing when I build mobile apps?
I'm building libraries,
I'm building websites,
I have multiple repos.
One thing I like about Azure DevOps --
like we're just going to put this project in GitHub,
but one thing that I like about Azure Repos
is that I create a project
and I can have multiple repos under that project.
It's very cool because you might have one for mobile,
you might have one for your web,
you might have one for your functions.
>> So you got all your back-end code as well.
>> Exactly.
I think of it as this orchestration, like you said earlier.
I want to do all this stuff.
You know what else you need to do,
not only UI automation testing,
but you probably going to have testers testing your app,
then Azure Test Plans can come in.
>> Correct.
>> So it's cool. It's nice because even the Artifacts,
if you're creating your own NuGet packages for your apps,
you have your own little private repositories are there
with all of your packages.
>> Yeah.
>> That's cool.
So we're going to show all of these and how it all works together.
>> Yeah.
>> That's what's cool because it's like all three products.
Do you need three products?
Well, in the world we live in,
you can try to force everything in a project in one single product.
>> Yeah.
>> Like, I'm only going to use this stuff,
but we use all sorts of products.
I mean, I love Azure DevOps
because there's all sorts of extensions,
but you might already have your code on Bitbucket
or you might already have your code on GitHub, right?
That's what we're going to kind of show today.
How do these things work together seamlessly.
>> Yeah. It's super cool
because these tools do work together perfectly.
>> Yeah. That's what we're going to show.
But now we have a baseline of what are we going to talk about,
what is the series,
and what are the products were going to show.
>> Cool.
>> I'm super excited because I'm going to learn from you.
I hope you learn a little bit from me.
>> I'm going to learn a lot. I cannot wait. I'm really excited.
>> We hope that you learn a lot,
and of course we want your feedback.
So leave comments in the show notes
below on YouTube or on Channel 9,
and you'll see the whole series unveil every single week
right here on YouTube and Channel 9.
So tune in and thanks for watching this very first episode.
Abel, thanks for joining me.
>> Thanks, man.
>> Cheers.
[MUSIC]