Android devices have a massive share of the global user population. Because more and more people are using Android smartphones, app developers need to be able to test their application’s functionality on Android devices just as they would on Windows desktop or Apple...
Serverless computing is hot. Interest in the topic is in rapid ascent, and advocates call it “the future of computing.” What specific winners are emerging from all this activity? Here are six cutting-edge ideas that are worth tracking.
Serverless grows beyond Amazon
First, it’s important to understand first what “serverless” means. It doesn’t actually mean computing without servers; instead, it’s function-as-a-service (FaaS), platform-as-a-service (PaaS) or even container-as-a-service (CaaS).
In its most skeletal form, a customer specifies a function — what is the product of three and five, for instance — and leaves all the details of implementation to the FaaS provider. That includes the kind of operating system used, the particular hardware, where that hardware runs, and so on; the customers only cares about specifying their problem clearly so they receive a correct answer.
The promise of FaaS is that the customer can leave all of computing’s chores to the provider’s experts, apart from the central value of expression of the function. Customers benefit from focusing on the unique value of their function, and they can save expenses through a contract that charges only for the essential computation when it is executed: In principle, there’s no need to maintain infrastructure during all the time the computation isn’t needed. Any server is only involved and amortized on demand.
AWS’s Lambda was the pioneer in large-scale FaaS. The market increasingly regards FaaS as a commodity, though, and competitors Azure and Google Cloud, among others, are gaining on Amazon. That’s the first important trend to know: It has become perfectly reasonable to buy serverless from someone other than AWS.
CaaS
AWS isn’t standing still, though: late in 2017, it introduced its CaaS offering, Fargate.
Will CaaS replace FaaS? I don’t expect that at all: FaaS will continue to be the right choice for far more cloud customers for at least a few years. At the same time, CaaS is sufficiently important that most cloud providers will offer some form of it soon. In evaluating and testing serverless designs, make sure everyone has the same kind of serverless in mind.
Serverless Java
Java has a bad reputation in some circles of the Lambda world, and with good reason: Java’s cold-start performance is awful compared to Python and JavaScript, the leading FaaS languages.
However, a little tuning makes it possible for Java to fly just as high as its usual competitors. “Serverless Java” can be a great technical solution, and organizations will choose it more and more in coming years. A huge backlog of Java-coded enterprise applications deserve migration to serverless.
One complication to the serverless Java story is the remarkable growth in the use of Go since its release at the beginning of the year. Will Go turn out to be a better Java than Java itself for serverless? It’ll be a few years more before we can fairly judge this question.
Functional languages in serverless deployment
Another important trend in serverless technology is the use of functional languages. While JavaScript and Python remain the leaders, with compiled languages ascending lately, serverless architectures naturally emphasize themes of statelessness and compositionality. Functional languages are not just feasible in serverless environments; in many ways, they’re the most natural choices.
Most commercial work I know to this point has been done in F#, Haskell, and Scala. Elixir and other functional languages are just now gaining the tools they need to make serverless work well for them.
Serverless testing
Testing serverless work is a subject just now emerging from its infancy. While the serverless approach to testing may actually be easier, it’s so new that answers are, at best, not widely known.
One consistent signal from industry surveys is that the biggest challenges when it comes to serverless are monitoring and debugging, which can be seen as aspects of testing. How to test and monitor serverless applications is an active area for research and development, and the next couple of years will be particularly exciting.
Data management and serverless computing
Perhaps most crucial of all are questions about how to handle databases in a PaaS architecture. Languages are arguably fungible, cloud markets might change but they won’t disappear, and clever people will eventually come up with tolerable container licensing schemes. Database management, though, has to be right for serverless to take off properly. And it’s not there yet.
Azure argues for its Cosmos, and other providers have their own recommendations. None of them have yet proven themselves ready, though, to be safe stores for the trillions of dollars of value that corporate and governmental databases represent. Businesses have demonstrated that algorithms and even employees can be traded out; customer records, process recipes, and all other trade secrets, however, are irreplaceable.
Databases must be managed with care, and the stateless-serverless world is only now starting to understand how to handle transactional persistence. The next few years will matter the most for putting the framework of this answer in place.
Conclusion
Serverless’s explosive growth makes it hard to predict specific outcomes, but the broad outlines of serverless are clear by now: Rapid growth will continue, and solutions to testing and database management problems are so vital that some winners will soon emerge.
Related Posts:
7 Best Android Testing Tools
There are more and more Android testing tools available for mobile app developers. These are our favorites for performance, accessibility, and security.
What Is the Difference Between Regression Testing and Retesting?
Regression testing and retesting are essential methodologies testers employ to ensure software quality. If you’re new to both or aren’t sure when to use which technique, this article should help. We’ll discuss the importance of regression testing in software testing. ...
DevOps Test Automation Tools & Best Practices
DevOps test automation enables teams to work faster and create better products. These best practices and tools make it easier to implement test automation.