Last updated at Mon, 06 Nov 2017 21:36:23 GMT

可能在我的编程生涯中发生的最大的变化就是从创建运行于已知环境的代码的转变, tangible hardware to making code that runs on the Cloud. We’ve gone from server based computing to the serverless environment. The transformation has brought us the practice of DevOps. 同样,这种转变迫使我们重新思考设计代码的整个方式. 越来越多的现代编程是将基于云的资源拼接在一起,这些资源提供不同的、越来越细粒度的服务,并将其整合到单个应用程序中. 这些应用程序随后通过移动设备或作为物联网中的一个独特的东西交付给消费者.

The change is not going to slow down. And the implications that result are worth thinking about. I do, a lot. I like to imagine the future based on what I know today. 见鬼,我是一名开发人员,这就是我们的工作,想象事物,然后将其变为现实.

So, 在想象技术前景的精神中,这将是无服务器计算的结果, I make 3 predictions. These 3 predictions are:

  • Increased lock-in behavior on the part of cloud providers
  • Improved Service Discovery
  • Reinvention of Debugging Technology

Allow me to elaborate.

Increased lock-in behavior on the part of cloud providers

In the early twentieth century there were hundreds of automobile manufacturers in the United States. Today there are a handful. When I started out programming back in the 80s there were hundreds of computer manufacturers. Again, a handful remain. Today there are many providers of cloud services, but if history proves correct, the number will dwindle to a select few that will remain. That’s the way it goes. 大公司拥有规模经济,可以以更低的成本生产更好的产品. Smaller companies can’t compete.

The consolidation is underway. Presently there are 4 major services providers in the compute services space. 它们是亚马逊网络服务(AWS)、Azure、谷歌计算引擎(GCE)和IBM的SoftLayer. These providers will be the “servers” in our future.

As good as consolidation is, it comes with a drawback. Big companies need to stay big in order to survive. To stay big you need market share. 扩大市场有两种方法:寻找新客户或从别人那里获得客户. Finding a new customer is hard. Keeping an existing from being stolen by others is harder. 公司用来保持市场份额的典型策略是确保客户只考虑你的产品,而不考虑其他产品. Time is finite. 你在我身上花的时间越多,你在别人身上花的时间就越少. It’s called lock-in. It’s a zero sum game and we’re going to see more of it.

Each provider does and will continue to work a little differently. As a result, your employment viability will be determined, in part, according to your competence with the given the provider. 因此,在不久的将来,成为一名称职的Java开发人员可能还不够. 您需要既是一名称职的Java开发人员,又是Amazon Web Services提供的许多产品的称职消费者, or Azure, or GCE or SoftLayer, depending the provider your employer uses.

Service providers are not going to let up. We’re already seeing certifications offered by AWS, Azure, Google and IBM. 随着企业消费者越来越依赖于给定的服务提供商,认证的价值将会增加.

作为开发人员,我们一半的工作将用于创建满足手头需求的代码. 我们的另一半工作是将代码部署到特定的提供者. 增加的锁定意味着我们将开始看到更多的适配器技术,这些技术将使不可知代码在特定服务提供商的环境中工作. 再一次,服务提供者不会放松并开始支持合作标准. There’s too much at stake.

Improved Service Discovery

At the service level, modern computing is becoming more granular. 在过去,我们会创建一个具有一个或多个功能的程序,提供VM并进行部署. 我们的程序可能需要一个消息队列、一个数据库和一些文件存储. We’d provision the VM accordingly and away we’d go.

Today your program might use a message queuing service, a database service, a CDN for static content and an identity service for user management. 这些服务中的每一个都是离散的,并且局限于一个定义狭窄的目的. You access the service via a URL. No libraries are needed except some sort of HTTP client.

As time goes on services will become more fine grain. 我们编写的更多代码将是关于将多个url调用的结果拼接到一起, valuable resource. You can think of these resources as a microserve .

Microservices are great provided you can find them. Finding microservices is called service discovery. Service discovery presently is a work in progress. We’re seeing a lot scholarly work on the topic. 而且,提供商正试图在其产品线中提供服务发现工具. AWS has Config Console and Azure has Resource Manager. Netflix has taken a more detailed approach to the need by building Eureka, 哪个工具可以查找托管在AWS上的服务的网络位置,用于网络资源管理. 这些正在进行的工作是有用的,但每个工作仍然专门用于给定的服务提供者. 而且仍然没有办法做一些像互联网查询这样简单的事情, asking, “哪里有一个微服务可以根据我存储的面部图像进行面部识别服务.” A real world, service provider agnostic standard is not in place yet.

随着微服务的发布和使用的增长,发现将变得更加重要. At some point soon somebody or some group will create an easy to use, easy to understand way to find a microservice. The need is there. Given the historic trends, 有人创造出解决方案来满足手头的需求只是时间问题.

Reinvention of Debugging Technology

A debugger is to a developer as a ruler is to a carpenter. Developers really can’t work without one. 不能逐步遍历源代码并检查调用堆栈, variables and expressions, we’re flying blind. The days of using a console.Log()或print()语句来判断发生了什么已经很久了. 但在分布式、基于服务的计算世界里,我们仍处于黑暗时代. 开发人员调试系统行为的常用方法是通过日志文件检查, 当你想到这真的只是一种阅读控制台的高难度方式时.log() output.

创建提高代码质量和部署速度的技术的趋势是朝着更好的解决方案前进. Every year more tools come out that allow us to create better code, faster and to deploy that code with less friction in the pipeline. The elephant in the living room is system level debuggers. 太多的深夜都花在查看日志文件上,试图找出问题所在. History has shown us that things must and will change. 公司坐下来意识到DevOps的运维端需要拥有Dev端已经享受了几十年的调试能力,这只是时间问题. Somebody will create a reliable, easy to use system level debugging framework and when they do, the industry will gobble it up.

Putting it All Together

We are living in exciting times. 移动计算和物联网正在把我们带到技术领域的未知领域. These times will come with opportunities and pitfalls. 但历史告诉我们,技术的进步大多数时候是朝着更好的方向发展的. 希望我上面描述的预测能帮助你思考一条适合你的前进道路. 不管我被证明是对还是错,有几件事是肯定的. The age of Serverless computing is here; the implications need to be contemplated and those that adapt will play an important part in the future of our profession. The choice is yours. Me? I’m adapting.