In October 2019, it was announced that MovementForward was awarded a grant from the U.S. Department of Justice (DOJ), Office of Justice Programs (OJP) Bureau of Justice Assistance (BJA). The title of the grant is ‘Innovations in Community Based Crime Reduction’ and it is a 4 year grant for $1,000,000. One of the primary deliverables for our award is a mobile application, the OneCOP App. The OneCOP App will be piloted in the Near West Collaborative community of southwest Indianapolis, where we hope to use the app to augment our existing work in Indianapolis, and eventually expand nationwide. In this series, I will be writing about how we are developing the app and explain some of the decisions we are making.
Why do you need cloud hosting?
In order for us to manage our own databases, run app servers that access these databases, and provide endpoints for the OneCOP App to interact with these app servers, we needed computing hardware. We could either stand up our own physical servers or pay someone to manage the hardware for us. We, like almost all organizations at this time, chose the latter.
Benefits of Cloud Hosting for us:
- Elastic scaling
- No physical footprint in office
- No upfront cost
- Geographic redundancy
What are the options?
There are a lot of options out there for cloud providers. We won’t go into all of the details here, but there are 3 big players: AWS (Amazon), Azure (Microsoft), and GCP (Google). You also have solid options from smaller players like Digital Ocean.
How do you choose?
Choosing your provider is a big decision, you will likely be using them for a significant amount of time and integrations can run pretty deep, making it a pain to switch. When in doubt, go with AWS, they are the market leader and gold standard. No one asks “Why did you choose Amazon?”, you only get questions like that when you don’t use Amazon. One reason to not go with AWS is if you have an expert in another service, then just go with what your team knows. If you are at a point in your project where one provider is a clear winner over another from a tech standpoint, you probably have someone on your team that is technical enough to help with that decision.
For us, the primary distinctions between each of the providers was insignificant. At our scale, pricing wasn’t going to be much different for any of them. We were trying to stay vendor agnostic, so proprietary product offerings were not going to sway us. All major players run excellent hardware, have a ton of data centers all over the world, and publish great documentation.
Why we chose Azure
We will list a few reasons why we like Azure, but the main reason we chose Azure is their $3500 annual credit for nonprofits. It was fairly simple to get approved and their support team was a breeze to work with. I’d be dishonest if I attributed our final decision to anything other than this recurring credit. As I mentioned in the section above, there just aren’t many distinguishing features between the big 3 that really matter to us.
We will definitely spend above $3500 a year, but that credit gives us flexibility and shows that Microsoft is interested in helping nonprofits get up and running.
What we like about Azure
Because we are participating in the Microsoft for Nonprofits program, we get a lot of great stuff for free. We are enjoying licenses for the Microsoft Office Suite, device management with InTune for our laptops, and we will get a free Github organization account (eventually, they have been very slow). Within the Azure dashboard, I can manage all of our active directory users, their licenses, and their devices. Everything was easy to set up and adding new users is a piece of cake.
Note: We do use Gmail for email, domain management, and GSuite for collaborative work, so I do have to do some admin tasks in the Google Admin portal. Two places to manage an entire organization is not too bad, in my opinion.
From a computing perspective, they have everything we need. The interface for creating new resources isn’t perfect, but neither are the interfaces that AWS or GCP offer. I like that I can see all of my resources on one screen, as opposed to having to navigate through each region to see resources. Finally, their support has been tremendous. Other than extremely slow communication with the Github for Nonprofts team, I have been blown away by the response time and helpfulness.
Some of the resources we are currently using:
- Azure Database for MySQL server
- App Service
- Application Insights
- Azure Database for PostgreSQL server
- Azure Functions
- API Management