In the year 2016, software is a global phenomenon. We may not always think about it when starting a project, but it has been a very revolutionary change over the past decade. Mobile phones and tablets have penetrated every market from Latin and South America to the Middle East to the juggernaut of user-bases: China. Putting our software in the hands of a worldwide audience is a critical component for success.
Not only can our users be found all over the world, but the development teams for our apps can be located anywhere too. Production now is potentially distributed, with developers, reviewers, testers, and other stakeholders not necessarily sharing an office or geo-location. We can no longer operate as if the entire production team will be located in the same office or general area.
These realities raise questions about how to ensure that we can deliver our software or code all over the world quickly, efficiently, and in a localized fashion. We want quick, responsive APIs and web pages, regardless of whether the user is down the street or across an ocean. We need storage and source control mechanisms that enable different teams in different time zones to work seamlessly together. These are the sorts of challenges that used to be exclusive to large enterprises with vast resources to solve.
Today, we've got Platform-as-a-Service to help. PaaS systems offer an inherently easy mechanism for global distribution of our APIs, apps, and web pages. Public PaaS services in particular are ideal for scenarios like this, enabling business large and small to scale up to global distribution with minimal investment. When you work with a PaaS system, you are able to focus on development and features while offloading the work of distribution to the service provider.
Microsoft Azure App Service, a PaaS that offers web apps, mobile, and API all in a single framework, makes deployment to data centers all over the world a breeze. Azure has data centers in the US, Europe, Asia, Japan, and even Australia. When you deploy App Services on Microsoft Azure you can choose to upload to multiple data centers and implement their Traffic Manager service for load balancing. Traffic Manager uses a policy engine based on DNS requests to ensure that users are balanced onto the data center that's closest to them, geographically speaking. This improves performance for users all over the world, and also provides an inherent failover mechanism in the event a center becomes unresponsive. Those users are not locked out of your app, but rather redirected to the next closest center that is up and running.
Google's App Engine (GAE) PaaS offers an interesting service as well: Built-in Content Delivery Network (CDN). A CDN allows you to distribute files to various data centers around the world. These are not necessarily Google-owned data centers but rather include many points-of-presence from 3rd party partners such as ISPs. When you configure your GAE app you can define static content in a simple configuration file, and Google automatically caches that content on their CDN all over the globe. Users then are automatically redirected to download those files from the closest CDN endpoint without any further work from us. It's all handled in the backend, and the best part is not only is it free, but it reduces the work our GAE app has to perform -- so it can actually save us money.
For collaboration of development and deployment tasks, public PaaS is an easy choice to make. Google offers a private Git repository with each App Engine project, ensuring you have a secure and centralized place to manage your source code from. On top of that, their new Identity and Access Management system allows for fine-grained control over which users have access to which functions, so development, testing, and deployment into production can all be managed by separate teams. Heroku also offers a private Git repo and basic permission features for collaborators.
For deployment management, Microsoft Azure's continuous integration features make the DevOps pipeline a breeze. Azure will integrate with a variety of source control tools including Git, Mercurial, and their own Team Foundation Server. Once integrated, continuous integration features can be enabled allowing code commits to be automatically run deployed into PaaS environments for unit testing. Stakeholders can be notified automatically as well, ensuring that the process is as smooth and hands off as possible.
These features, along with all of the various features that we've discussed through this series, make PaaS an ideal tool for worldwide distribution and collaboration. What was once an expensive and difficult process fraught with challenges is now almost an afterthought. Your team can be ready for the entire world with a few clicks of a mouse, so let's get developing!
This article is published as part of the IDG Contributor Network. Want to Join?