December 21, 2018 | Written by: Henrik Loeser, Vidyasagar Machupalli, and VAN STAUB
Share this post:
Looking back at 2018: Favorite new solution tutorials
It is almost the end of the year and, therefore, time to look back at 2018. This year, the IBM Cloud Solutions Tutorials team created 22 new tutorials. They cover a broad range of topics, ranging from high-level user and account organization and usage/billing questions over Artificial Intelligence (AI)/Machine Learning (ML) down to scripting with Terraform or Continuous Delivery (CD) pipelines. As software developers, we’re fond of the retrospective. So we’re looking back and asking the team: Which were your favorite newly added tutorials and why? Do you have any personal technology highlights? Any recommendations (or even predictions) for the future?
Architecture: Secure cloud applications
I recall trying out the Serverless web application and API tutorial and thinking, “Wow, this is so easy.” And “easy” shouldn’t be confused with simple. There’s this “je ne sais quoi” about how you clone the code to your GitHub account, serve it using GitHub pages, throw an IBM managed API into it, add security, and then you’ve got an app (JAMstack?). It’s like the perfect combination of emerging technology, multi-vendor architecture, and rapid development.
While the Reviewing IBM Cloud services, resources, and usage tutorial doesn’t focus on it, there’s a big idea at work in the companion application introduced at the end. The companion app is essentially a JSON extract-transform-load (ETL) pipeline written as a series of serverless artifacts. I thought the use case was ideal because batch processing fits the economics of serverless. But building the app demonstrated some of the difficulty with serverless application development: orchestration, state management, and re-usability. I remember debugging for quite some time only to find that a downstream action had simply overwritten the property of another action. Figuring that out through multiple layers of indirect invocation in an event-driven architecture is a challenge, and I expect the tooling around serverless will have to improve quickly to help serverless become more mainstream.
And, last but not least, is the Best practices for organizing users, teams, applications tutorial because, let’s face it, trying to get a big picture view of IAM, users, accounts is a lot of documentation. The tutorial is a well-presented distillation … and who doesn’t love to follow best practices.
One of my favorite tutorials is Plan, create, and update deployment environments. It clearly defines the best way to create multiple deployments and most importantly easily create spaces, organizations, IAM resource and access groups using Terraform.
Next on my list is Apply end-to-end security to a cloud application: “No application architecture is complete without a clear understanding of potential security risks and how to protect against such threats.” I love this introduction because as much as we talk about Cloud, we should care about security as well. This tutorial shows you how to apply end-to-end security to a cloud application.
Users are less likely to experience downtime when an application is designed with resiliency in mind. When implementing a solution with Kubernetes Service, you benefit from built-in capabilities, like load balancing and isolation, increasing resiliency against potential failures with hosts, networks, or apps. The tutorial Resilient and secure multi-region Kubernetes with Cloud Internet Services helps to build such apps.
Data and its security are the heart, the core of IT. Hence, I always enjoy tutorials guiding towards more secure processing of data. One of my favorite tutorials is Apply end-to-end security to a cloud application. It provides the steps, the code, and even an automated deploy script to create secure Dropbox-like application. It helped me to dig deeper into the concept of Bring Your Own Key (BYOK). The tutorial also shows how to encrypt data at rest and data in transit. I learned how simple it is to deploy code to a custom domain and secure it with TLS and a related Let’s Encrypt certificate.
Next on my list is Best practices for organizing users, teams, applications. That tutorial is your guide through all highs and lows of account management and provides a clear “big picture.”
Finally, I recommend Combining serverless and Cloud Foundry for data retrieval and analytics. Maybe not obvious from the title, but it is pretty useful and has ready-to-use code. An action based on IBM Cloud Functions collects GitHub traffic stats on a regular schedule and inserts the data into a SQL database (Db2). A Python Flask-based portal provides reports and allows you to drill down into the data. Last, but not least, another serverless action post reports to a Slack channel. Simple and straightforward, it works and I use it for my own insights. What more to wish for?
The tutorial Resilient and secure multi-region Kubernetes clusters with Cloud Internet Services covers the resiliency and security for Kubernetes, both of which are very important areas for Kubernetes. By completing the solution, you get to deeper understand beyond the basics of Kubernetes. My second choice, Plan, create and update deployment environments, is a solution tutorial developers must know for when deploying a production app. It is a best practices guide for deployments. Last, Use Virtual Servers to build highly available and scalable web app, discusses classic old VMs. That topic never gets old and still can’t be avoided. The tutorial is easy to follow, going from basic to advanced by the end of the solution completion.
Cloud technologies to watch
During our work on new solution tutorials, while exploring and considering possible topics, and by trying to stay up-to-date, we stumbled over lots of technologies and buzzwords. Here are our personal insights and perspectives.
Two technologies to look out for in 2019 are Quantum Computing and AutoML. The beginner section of the IBM Q Experience Documentation starts like this:
We’re at the start of a new stage in the information revolution. The first stage began around 1950 with a handful of expensive room-sized computers, used only by specialists. Today there are more computers in the world than people, and we rely on them for everything from communication to transportation, commerce, and (of course!) the Internet. All of our computers’ varied abilities are produced by manipulating zeros and ones using simple operations like AND, OR, and NOT, which are called logic gates. By doing so billions of times per second in billions of places at once, they keep our world humming along in the manner to which we have become accustomed.
For over 35 years, IBM has been researching an utterly different kind of information and information processing, as different from ordinary “classical” information as a dream is from a book. Unlike dreams, this new kind of information, called quantum information, is both well-understood and useful. The basic unit of quantum information is called a qubit (pronounced CUE-bit), and a machine for storing and processing qubits is called a quantum computer.
Automated Machine Learning (AutoML) will allow us to rapidly and automatically build neural networks (that learn) from scratch. Here is a quote from a Forbes article with a good AutoML overview:
AutoML significantly reduces the time and effort required to generate sophisticated machine learning models dealing with natural language processing and computer vision. Based on techniques such as transfer learning, AutoML leverages existing neural networks to accelerate the training process to deliver accurate predictions. AutoML can generate models even from smaller datasets making it an attractive choice for enterprises.
Over the last few months, we have seen many important announcements regarding the foundation of what we work with. Secure minimal operating (system) stacks in a container form the foundation of our computing platforms. Depending on development and deployment requirements, developers have the choice of serverless computing, PaaS (Cloud Foundry or the enterprise version CFEE), or Kubernetes. Regardless of the individual choice, all is built on the same secure, resilient, and scaling foundation. It will be interesting to see how this evolves.
Containerization has reached the on-prem world—traditional data centers. The combination of public and private (on-prem) clouds (“hybrid cloud”) creates new operating models and challenges. Multicloud management is something we will see more often in 2019.
Cloud users have mastered how to deploy apps and microservices. The next step in the journey towards cloud is multi-region deployments on Cloud Foundry, Kubernetes, Functions, and VMs. Personally, I faced the challenges when deploying an app across multiple regions and working on best practices for highly available solutions built with IBM Cloud. I am looking forward to 2019 and new tutorials on resilient, highly available applications that span multiple regions.
Cloud Foundry Enterprise Environment (CFEE) is an interesting service offered in IBM Cloud. CFEE offers an isolated, enterprise-grade Cloud Foundry platform on-demand. The CFEE environment is deployed on isolated hardware (Kubernetes clusters). It provides users full control over the environment, including access control, capacity, version updates, resource usage, and monitoring. We have extended our Logistics Wizard app with a step by step guide to deploy it on CFEE. I expect enterprise environments to become an important enabler for cloud application workloads.
I have the feeling that the intersection of several technologies is going to further change the client-server paradigm we’re used to. Those technologies are single page web apps, cloud object storage, serverless, and code scaffolding. A great set of articles on this idea is found in Developing Serverless Web Applications on the IBM Cloud. I think that if we have quick, opinionated ways to scaffold and deploy all the backend “stuff” that was a traditional a three-tier application, we’ll see a resurgence of web apps. Remember how big Web 2.0 was … maybe this’ll be 2.5?!
Engage with us
If you have feedback, suggestions, or questions about this post, please reach out to us on Twitter (@data_henrik, @VidyasagarMSC, @vanstaub or @twanawebtech) or LinkedIn (Henrik, Vidya, Van or Twana). You can also meet some of us in person at Think 2019. Use the feedback button on individual tutorials to provide suggestions. Moreover, you can open GitHub issues on our code samples for clarifications.