Building the Right Environment to Support AI, Machine Learning and Deep Learning
Every developer dreams of building the next Facebook, YouTube, or Amazon.com. While I can’t promise you'll be the next Internet Mogul; I will guarantee that the next information technology product Mogul will leverage a Cloud Computing platform. Whether your product is a game or a printer; it needs an Internet presence. Internet connectivity is everywhere and communication from any device is no longer rocket science.
As more organizations adopt cloud platforms; developers must adapt to the new software libraries, architectures, and conventions a cloud platform requires. Familiarity with cloud platforms rounds out a developer's technology skills; just as surely as knowing a Framework. Developers deciding on new skills to pursue; should take a serious look at the cloud.
The Perfect Storm
The Cloud is not a fad. Looking at its evolution from a developer perspective; I like to think of it as late 1990s Web hosting services taken to the next level. Faster, cheaper network bandwidth has made cloud services accessible. For example, storage services would not be useful without bandwidth. Virtualization has made cloud services manageable. Virtualization isolates clients from one another and effectively turns a computer system into data that can be moved anywhere in a Datacenter.
Almost all the major information technology players have some cloud offering. Offerings often span the infrastructure comprising an application plus niche services for common scenarios.
Do You Really Know Clouds
Cloud vendors offer more than simply hosting and storage. Consider what an Internet application requires. Even basic Internet sites require a database, email, and an authentication mechanism. More advanced sites with considerable traffic require network load balancers and server clusters.
Storage would seem like a simple service with one or two options. However, Cloud storage is often optimized around a specific purpose. For example, Microsoft’s Azure offers media distribution services and Amazon offers multiple storage options geared toward different cost consciousness tiers. Likewise databases often come with broad offerings. For example: Azure offers SQL Server in the cloud. The development and management experience is very close to what SQL developers have on premise. Amazon supports a range of databases including multiple non-relational options.
Developers ignoring these changes will soon be lost.
Then there are a range of specialized services that often emerge from a vendor's roots. Azure has Office 365 and various SharePoint offerings. Amazon's Cloud offerings grew out of the competencies it acquired building infrastructure for Amazon.com. Rackspace a popular private cloud provider has open-sourced it's Cloud infrastructure via Openstack.
These services have driven new programming models and patterns. Developers ignoring these changes will soon be lost.
Weathering the New Development Model
Cloud services are built to scale. Supporting millions of customer requests per second is a reliable way to vet a pattern or architecture. Making Windows a cornerstone in Azure has, no doubt, improved the operating system. The latest Windows release is smaller and faster. It includes new features like SMB 3.0 file serving and improved virtualization.
Platform often dictates the programming model. Cloud patterns are becoming the accepted model because of scalability and simplicity. The implication is, that there is a cloud programming model in a developer's near future. Evidence is everywhere. Aside from vetting Windows in the cloud; Azure Service Bus was released in the cloud before releasing on premise. Recent ASP.NET releases include cloud features. Web Roles and Worker Roles have entered the Visual Studio parlance. Though core programming NoSQL approaches are largely unchanged by the cloud, nevertheless there are some subtle changes that the cloud brings.
Though the cloud is driving changes; companies like Microsoft and Amazon realize that they need to provide transitions from the old to the new. Most of the noted changes are tweaks to existing approaches. For example, ASP.NET development remains the same, however, the way a developer approaches building instrumentation and configuration into an application changes. Learning new cloud technologies does not mean abandoning the languages and tools for something completely new. Advancing cloud knowledge merely requires some experimentation. Something most developers are already accustomed to.
Where does a developer start cloud learning? If you're a .NET developer; start with an Azure free trial. Almost everything a .NET developer has done on premise has a cloud counterpart. As noted earlier in the article, there are differences in the cloud models. Learning the differences is an important part of the retooling process. Next, try one of the Azure samples or try following many of the fine Azure articles on this site. If you have an MSDN license you can tap Azure resources through that.
There are free editions of Visual Studio. You'll find a list here: http://blogs.msdn.com/b/publicsector/archive/2012/09/13/free-developer-tools-choose-the-right-visual-studio-2012-express-edition.aspx .
Finally, set aside four or five hours and experiment. As stated earlier a developer will be surprised how much is already known especially if they stick to a well-known language.
The cloud is not new. Companies like Microsoft and Amazon have been supporting large Data Centers for some time. However, virtualization, hosting specialization, broader Internet access, and software network automation; have made cloud options more appealing. As cloud models mature and more software is built for a cloud environment; developers will be forced to adapt. Cloud providers support all the languages and tools developers have come to love. Adaptation need not be painful as long as a developer starts today. Take a leap you won't be sorry.
Azure Get started links on this site.
Note: This site does business with companies mentioned in this article; however, this article was independently written with no input from those companies.