分类 观点 下的文章

 title=

IoT (物联网)设备正在迅速改变我们的生活。这些设备无处不在,从我们的家庭到其它行业。根据一些预测数据,到 2020 年,将会有 100 亿个 IoT 设备。到 2025 年,该数量将增长到 220 亿。目前,物联网已经在很多领域得到了应用,包括智能家居、工业生产过程、农业甚至医疗保健领域。伴随着如此广泛的应用,物联网显然已经成为近年来的热门话题之一。

多种因素促成了物联网设备在多个学科的爆炸式增长。这其中包括低成本处理器和无线连接的的可用性,以及开源平台的信息交流推动了物联网领域的创新。与传统的应用程序开发相比,物联网设备的开发成指数级增长,因为它的资源是开源的。

在解释如何使用物联网设备来保护儿童之前,必须对物联网技术有基本的了解。

IoT 设备是什么?

IoT 设备是指那些在没有人类参与的情况下彼此之间可以通信的设备。因此,许多专家并不将智能手机和计算机视为物联网设备。此外,物联网设备必须能够收集数据并且能将收集到的数据传送到其他设备或云端进行处理。

然而,在某些领域中,我们需要探索物联网的潜力。儿童往往是脆弱的,他们很容易成为犯罪分子和其他蓄意伤害者的目标。无论在物理世界还是数字世界中,儿童都很容易面临犯罪的威胁。因为父母不能始终亲自到场保护孩子;这就是为什么需要监视工具了。

除了适用于儿童的可穿戴设备外,还有许多父母监视应用程序,例如 Xnspy,可实时监控儿童并提供信息的实时更新。这些工具可确保儿童安全。可穿戴设备确保儿童身体上的安全性,而家长监控应用可确保儿童的上网安全。

由于越来越多的孩子花费时间在智能手机上,毫无意外地,他们也就成为诈骗分子的主要目标。此外,由于恋童癖、网络自夸和其他犯罪在网络上的盛行,儿童也有可能成为网络欺凌的目标。

这些解决方案够吗?我们需要找到物联网解决方案,以确保孩子们在网上和线下的安全。在当代,我们如何确保孩子的安全?我们需要提出创新的解决方案。 物联网可以帮助保护孩子在学校和家里的安全。

物联网的潜力

物联网设备提供的好处很多。举例来说,父母可以远程监控自己的孩子,而又不会显得太霸道。因此,儿童在拥有安全环境的同时也会有空间和自由让自己变得独立。

而且,父母也不必在为孩子的安全而担忧。物联网设备可以提供 7x24 小时的信息更新。像 Xnspy 之类的监视应用程序在提供有关孩子的智能手机活动信息方面更进了一步。随着物联网设备变得越来越复杂,拥有更长使用寿命的电池只是一个时间问题。诸如位置跟踪器之类的物联网设备可以提供有关孩子下落的准确详细信息,所以父母不必担心。

虽然可穿戴设备已经非常好了,但在确保儿童安全方面,这些通常还远远不够。因此,要为儿童提供安全的环境,我们还需要其他方法。许多事件表明,儿童在学校比其他任何公共场所都容易受到攻击。因此,学校需要采取安全措施,以确保儿童和教师的安全。在这一点上,物联网设备可用于检测潜在威胁并采取必要的措施来防止攻击。威胁检测系统包括摄像头。系统一旦检测到威胁,便可以通知当局,如一些执法机构和医院。智能锁等设备可用于封锁学校(包括教室),来保护儿童。除此之外,还可以告知父母其孩子的安全,并立即收到有关威胁的警报。这将需要实施无线技术,例如 Wi-Fi 和传感器。因此,学校需要制定专门用于提供教室安全性的预算。

智能家居实现拍手关灯,也可以让你的家庭助手帮你关灯。同样,物联网设备也可用在屋内来保护儿童。在家里,物联网设备(例如摄像头)为父母在照顾孩子时提供 100% 的可见性。当父母不在家里时,可以使用摄像头和其他传感器检测是否发生了可疑活动。其他设备(例如连接到这些传感器的智能锁)可以锁门和窗,以确保孩子们的安全。

同样,可以引入许多物联网解决方案来确保孩子的安全。

有多好就有多坏

物联网设备中的传感器会创建大量数据。数据的安全性是至关重要的一个因素。收集的有关孩子的数据如果落入不法分子手中会存在危险。因此,需要采取预防措施。IoT 设备中泄露的任何数据都可用于确定行为模式。因此,必须对提供不违反用户隐私的安全物联网解决方案投入资金。

IoT 设备通常连接到 Wi-Fi,用于设备之间传输数据。未加密数据的不安全网络会带来某些风险。这样的网络很容易被窃听。黑客可以使用此类网点来入侵系统。他们还可以将恶意软件引入系统,从而使系统变得脆弱、易受攻击。此外,对设备和公共网络(例如学校的网络)的网络攻击可能导致数据泄露和私有数据盗用。 因此,在实施用于保护儿童的物联网解决方案时,保护网络和物联网设备的总体计划必须生效。

物联网设备保护儿童在学校和家里的安全的潜力尚未发现有什么创新。我们需要付出更多努力来保护连接 IoT 设备的网络安全。此外,物联网设备生成的数据可能落入不法分子手中,从而造成更多麻烦。因此,这是物联网安全至关重要的一个领域。


via: https://opensourceforu.com/2019/10/how-to-use-iot-devices-to-keep-children-safe/

作者:Andrew Carroll 选题:lujun9972 译者:Morisun029 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

打破信息孤岛,成为网络安全的拥护者,这对你、对你的职业、对你的公司都会有所帮助。

安全是 DevOps 中一个被误解了的部分,一些人认为它不在 DevOps 的范围内,而另一些人认为它太过重要(并且被忽视),建议改为使用 DevSecOps。无论你同意哪一方的观点,网络安全都会影响到我们每一个人,这是很明显的事实。

每年,黑客行为的统计数据 都会更加令人震惊。例如,每 39 秒就有一次黑客行为发生,这可能会导致你为公司写的记录、身份和专有项目被盗。你的安全团队可能需要花上几个月(也可能是永远找不到)才能发现这次黑客行为背后是谁,目的是什么,人在哪,什么时候黑进来的。

运维专家面对这些棘手问题应该如何是好?呐我说,现在是时候成为网络安全的拥护者,变为解决方案的一部分了。

孤岛势力范围的战争

在我和我本地的 IT 安全(ITSEC)团队一起肩并肩战斗的岁月里,我注意到了很多事情。一个很大的问题是,安全团队和 DevOps 之间关系紧张,这种情况非常普遍。这种紧张关系几乎都是来源于安全团队为了保护系统、防范漏洞所作出的努力(例如,设置访问控制或者禁用某些东西),这些努力会中断 DevOps 的工作并阻碍他们快速部署应用程序。

你也看到了,我也看到了,你在现场碰见的每一个人都有至少一个和它有关的故事。一小撮的怨恨最终烧毁了信任的桥梁,要么是花费一段时间修复,要么就是两个团体之间开始一场小型的地盘争夺战,这个结果会使 DevOps 实现起来更加艰难。

一种新观点

为了打破这些孤岛并结束势力战争,我在每个安全团队中都选了至少一个人来交谈,了解我们组织日常安全运营里的来龙去脉。我开始做这件事是出于好奇,但我持续做这件事是因为它总是能带给我一些有价值的、新的观点。例如,我了解到,对于每个因为失败的安全性而被停止的部署,安全团队都在疯狂地尝试修复 10 个他们看见的其他问题。他们反应的莽撞和尖锐是因为他们必须在有限的时间里修复这些问题,不然这些问题就会变成一个大问题。

考虑到发现、识别和撤销已完成操作所需的大量知识,或者指出 DevOps 团队正在做什么(没有背景信息)然后复制并测试它。所有的这些通常都要由人手配备非常不足的安全团队完成。

这就是你的安全团队的日常生活,并且你的 DevOps 团队看不到这些。ITSEC 的日常工作意味着超时加班和过度劳累,以确保公司,公司的团队,团队里工作的所有人能够安全地工作。

成为安全拥护者的方法

这些是你成为你的安全团队的拥护者之后可以帮到它们的。这意味着,对于你做的所有操作,你必须仔细、认真地查看所有能够让其他人登录的方式,以及他们能够从中获得什么。

帮助你的安全团队就是在帮助你自己。将工具添加到你的工作流程里,以此将你知道的要干的活和他们知道的要干的活结合到一起。从小事入手,例如阅读公共漏洞披露(CVE),并将扫描模块添加到你的 CI/CD 流程里。对于你写的所有代码,都会有一个开源扫描工具,添加小型开源工具(例如下面列出来的)在长远看来是可以让项目更好的。

容器扫描工具:

代码扫描工具:

Kubernetes 安全工具:

保持你的 DevOps 态度

如果你的工作角色是和 DevOps 相关的,那么学习新技术和如何运用这项新技术创造新事物就是你工作的一部分。安全也是一样。我在 DevOps 安全方面保持到最新,下面是我的方法的列表。

  • 每周阅读一篇你工作的方向里和安全相关的文章.
  • 每周查看 CVE 官方网站,了解出现了什么新漏洞.
  • 尝试做一次黑客马拉松。一些公司每个月都要这样做一次;如果你觉得还不够、想了解更多,可以访问 Beginner Hack 1.0 网站。
  • 每年至少一次和那你的安全团队的成员一起参加安全会议,从他们的角度来看事情。

成为拥护者是为了变得更好

你应该成为你的安全的拥护者,下面是我们列出来的几个理由。首先是增长你的知识,帮助你的职业发展。第二是帮助其他的团队,培养新的关系,打破对你的组织有害的孤岛。在你的整个组织内建立由很多好处,包括设置沟通团队的典范,并鼓励人们一起工作。你同样能促进在整个组织中分享知识,并给每个人提供一个在安全方面更好的内部合作的新契机。

总的来说,成为一个网络安全的拥护者会让你成为你整个组织的拥护者。


via: https://opensource.com/article/19/9/devops-security-champions

作者:Jessica Repka 选题:lujun9972 译者:hopefully2333 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

开源社区和行业趋势的每周总览。

 title=

作为我在具有开源开发模型的企业软件公司担任高级产品营销经理的角色的一部分,我为产品营销人员、经理和其他影响者定期发布有关开源社区,市场和行业趋势的定期更新。以下是该更新中我和他们最喜欢的五篇文章。

OpenStack Train 中最令人兴奋的功能

考虑到 Train 版本必须提供的所有技术优势(你可以在此处查看版本亮点),你可能会对 Red Hat 认为这些将使我们的电信和企业客户受益的顶级功能及其用例感到好奇。以下我们对该版本最兴奋的功能的概述。

影响:OpenStack 对我来说就像 Shia LaBeouf:它在几年前达到了炒作的顶峰,然后继续产出了好的作品。Train 版本看起来是又一次令人难以置信的创新下降。

以 Ansible 原生的方式构建 Kubernetes 操作器

操作器简化了 Kubernetes 上复杂应用程序的管理。它们通常是用 Go 语言编写的,并且需要懂得 Kubernetes 内部的专业知识。但是,还有另一种进入门槛较低的选择。Ansible 是操作器 SDK 中的一等公民。使用 Ansible 可以释放应用程序工程师的精力,最大限度地利用时间来自动化和协调你的应用程序,并使用一种简单的语言在新的和现有的平台上进行操作。在这里我们可以看到如何做。

影响:这就像你发现可以用搅拌器和冷冻香蕉制作出不错的冰淇淋一样:Ansible(通常被认为很容易掌握)可以使你比你想象的更容易地做一些令人印象深刻的操作器魔术。

Kubernetes 网络:幕后花絮

尽管围绕该主题有很多很好的资源(链接在这里),但我找不到一个示例,可以将所有的点与网络工程师喜欢和讨厌的命令输出连接起来,以显示背后实际发生的情况。因此,我决定从许多不同的来源收集这些信息,以期帮助你更好地了解事物之间的联系。

影响:这是一篇对复杂主题(带有图片)阐述的很好的作品。保证可以使 Kubenetes 网络的混乱程度降低 10%。

保护容器供应链

随着容器、软件即服务和函数即服务的出现,人们开始着眼于在使用现有服务、函数和容器映像的过程中寻求新的价值。Red Hat 的容器首席产品经理 Scott McCarty 表示,关注这个重点既有优点也有缺点。“它使我们能够集中精力编写满足我们需求的新应用程序代码,同时将对基础架构的关注转移给其他人身上,”McCarty 说,“容器处于一个最佳位置,提供了足够的控制,而卸去了许多繁琐的基础架构工作。”但是,容器也会带来与安全性相关的劣势。

影响:我在一个由大约十位安全人员组成的小组中,可以肯定地说,整天要考虑软件安全性需要一定的倾向。当你长时间凝视深渊时,它也凝视着你。如果你不是如此倾向的软件开发人员,请听取 Scott 的建议并确保你的供应商考虑安全。

15 岁的 Fedora:为何 Matthew Miller 看到 Linux 发行版的光明前景

在 TechRepublic 的一个大范围采访中,Fedora 项目负责人 Matthew Miller 讨论了过去的经验教训、软件容器的普遍采用和竞争性标准、Fedora 的潜在变化以及包括 systemd 在内的热门话题。

影响:我喜欢 Fedora 项目的原因是它的清晰度;该项目知道它代表什么。像 Matt 这样的人就是为什么能看到光明前景的原因。

我希望你喜欢这张上周让我印象深刻的列表,并在下周一回来了解更多的开放源码社区、市场和行业趋势。


via: https://opensource.com/article/19/10/kubernetes-openstack-and-more-industry-trends

作者:Tim Hildred 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

测试驱动开发技术是根据大自然的运作规律创建的,变异测试自然成为 DevOps 演变的下一步。

在 “故障是无懈可击的开发运维中的一个特点”,我讨论了故障在通过征求反馈来交付优质产品的过程中所起到的重要作用。敏捷 DevOps 团队就是用故障来指导他们并推动开发进程的。 测试驱动开发 Test-driven development (TDD)是任何敏捷 DevOps 团队评估产品交付的必要条件。以故障为中心的 TDD 方法仅在与可量化的测试配合使用时才有效。

TDD 方法仿照大自然是如何运作的以及自然界在进化博弈中是如何产生赢家和输家为模型而建立的。

自然选择

 title=

1859 年, 查尔斯·达尔文 Charles Darwin 在他的《 物种起源 On the Origin of Species 》一书中提出了进化论学说。达尔文的论点是,自然变异是由生物个体的自发突变和环境压力共同造成的。环境压力淘汰了适应性较差的生物体,而有利于其他适应性强的生物的发展。每个生物体的染色体都会发生变异,而这些自发的变异会携带给下一代(后代)。然后在自然选择下测试新出现的变异性 —— 当下存在的环境压力是由变异性的环境条件所导致的。

这张简图说明了调整适应环境条件的过程。

 title=

图1. 不同的环境压力导致自然选择下的不同结果。图片截图来源于理查德·道金斯的一个视频

该图显示了一群生活在自己栖息地的鱼。栖息地各不相同(海底或河床底部的砾石颜色有深有浅),每条鱼长的也各不相同(鱼身图案和颜色也有深有浅)。

这张图还显示了两种情况(即环境压力的两种变化):

  1. 捕食者在场
  2. 捕食者不在场

在第一种情况下,在砾石颜色衬托下容易凸显出来的鱼被捕食者捕获的风险更高。当砾石颜色较深时,浅色鱼的数量会更少一些。反之亦然,当砾石颜色较浅时,深色鱼的数量会更少。

在第二种情况下,鱼完全放松下来进行交配。在没有捕食者和没有交配仪式的情况下,可以预料到相反的结果:在砾石背景下显眼的鱼会有更大的机会被选来交配并将其特性传递给后代。

选择标准

变异性在进行选择时,绝不是任意的、反复无常的、异想天开的或随机的。选择过程中的决定性因素通常是可以度量的。该决定性因素通常称为测试或目标。

一个简单的数学例子可以说明这一决策过程。(在该示例中,这种选择不是由自然选择决定的,而是由人为选择决定。)假设有人要求你构建一个小函数,该函数将接受一个正数,然后计算该数的平方根。你将怎么做?

敏捷 DevOps 团队的方法是快速验证失败。谦虚一点,先承认自己并不真的知道如何开发该函数。这时,你所知道的就是如何描述你想做的事情。从技术上讲,你已准备好进行单元测试。

单元测试 unit test ”描述了你的具体期望结果是什么。它可以简单地表述为“给定数字 16,我希望平方根函数返回数字 4”。你可能知道 16 的平方根是 4。但是,你不知道一些较大数字(例如 533)的平方根。

但至少,你已经制定了选择标准,即你的测试或你的期望值。

进行故障测试

.NET Core 平台可以演示该测试。.NET 通常使用 xUnit.net 作为单元测试框架。(要跟随进行这个代码示例,请安装 .NET Core 和 xUnit.net。)

打开命令行并创建一个文件夹,在该文件夹实现平方根解决方案。例如,输入:

mkdir square_root

再输入:

cd square_root

为单元测试创建一个单独的文件夹:

mkdir unit_tests

进入 unit_tests 文件夹下(cd unit_tests),初始化 xUnit 框架:

dotnet new xunit

现在,转到 square_root 下, 创建 app 文件夹:

mkdir app
cd app

如果有必要的话,为你的代码创建一个脚手架:

dotnet new classlib

现在打开你最喜欢的编辑器开始编码!

在你的代码编辑器中,导航到 unit_tests 文件夹,打开 UnitTest1.cs

UnitTest1.cs 中自动生成的代码替换为:

using System;
using Xunit;
using app;

namespace unit_tests{

   public class UnitTest1{
       Calculator calculator = new Calculator();

       [Fact]
       public void GivenPositiveNumberCalculateSquareRoot(){
           var expected = 4;
           var actual = calculator.CalculateSquareRoot(16);
           Assert.Equal(expected, actual);
       }
   }
}

该单元测试描述了变量的期望值应该为 4。下一行描述了实际值。建议通过将输入值发送到称为calculator 的组件来计算实际值。对该组件的描述是通过接收数值来处理CalculateSquareRoot 信息。该组件尚未开发。但这并不重要,我们在此只是描述期望值。

最后,描述了触发消息发送时发生的情况。此时,判断期望值是否等于实际值。如果是,则测试通过,目标达成。如果期望值不等于实际值,则测试失败。

接下来,要实现称为 calculator 的组件,在 app 文件夹中创建一个新文件,并将其命名为Calculator.cs。要实现计算平方根的函数,请在此新文件中添加以下代码:

namespace app {
   public class Calculator {
       public double CalculateSquareRoot(double number) {
           double bestGuess = number;
           return bestGuess;
       }
   }
}

在测试之前,你需要通知单元测试如何找到该新组件(Calculator)。导航至 unit_tests 文件夹,打开 unit_tests.csproj 文件。在 <ItemGroup> 代码块中添加以下代码:

<ProjectReference Include="../app/app.csproj" />

保存 unit_test.csproj 文件。现在,你可以运行第一个测试了。

切换到命令行,进入 unit_tests 文件夹。运行以下命令:

dotnet test

运行单元测试,会输出以下内容:

 title=

图2. 单元测试失败后 xUnit 的输出结果

正如你所看到的,单元测试失败了。期望将数字 16 发送到 calculator 组件后会输出数字 4,但是输出(Actual)的是 16。

恭喜你!创建了第一个故障。单元测试为你提供了强有力的反馈机制,敦促你修复故障。

修复故障

要修复故障,你必须要改进 bestGuess。当下,bestGuess 仅获取函数接收的数字并返回。这不够好。

但是,如何找到一种计算平方根值的方法呢? 我有一个主意 —— 看一下大自然母亲是如何解决问题的。

效仿大自然的迭代

在第一次(也是唯一的)尝试中要得出正确值是非常难的(几乎不可能)。你必须允许自己进行多次尝试猜测,以增加解决问题的机会。允许多次尝试的一种方法是进行迭代。

要迭代,就要将 bestGuess 值存储在 previousGuess 变量中,转换 bestGuess 的值,然后比较两个值之间的差。如果差为 0,则说明问题已解决。否则,继续迭代。

这是生成任何正数的平方根的函数体:

double bestGuess = number;
double previousGuess;

do {
   previousGuess = bestGuess;
   bestGuess = (previousGuess + (number/previousGuess))/2;
} while((bestGuess - previousGuess) != 0);

return bestGuess;

该循环(迭代)将 bestGuess 值集中到设想的解决方案。现在,你精心设计的单元测试通过了!

 title=

图 3. 单元测试通过了。

迭代解决了问题

正如大自然母亲解决问题的方法,在本练习中,迭代解决了问题。增量方法与逐步改进相结合是获得满意解决方案的有效方法。该示例中的决定性因素是具有可衡量的目标和测试。一旦有了这些,就可以继续迭代直到达到目标。

关键点!

好的,这是一个有趣的试验,但是更有趣的发现来自于使用这种新创建的解决方案。到目前为止,bestGuess 从开始一直把函数接收到的数字作为输入参数。如果更改 bestGuess 的初始值会怎样?

为了测试这一点,你可以测试几种情况。 首先,在迭代多次尝试计算 25 的平方根时,要逐步细化观察结果:

 title=

图 4. 通过迭代来计算 25 的平方根。

以 25 作为 bestGuess 的初始值,该函数需要八次迭代才能计算出 25 的平方根。但是,如果在设计 bestGuess 初始值上犯下荒谬的错误,那将怎么办? 尝试第二次,那 100 万可能是 25 的平方根吗? 在这种明显错误的情况下会发生什么?你写的函数是否能够处理这种低级错误。

直接来吧。回到测试中来,这次以一百万开始:

 title=

图 5. 在计算 25 的平方根时,运用逐步求精法,以 100 万作为 bestGuess 的初始值。

哇! 以一个荒谬的数字开始,迭代次数仅增加了两倍(从八次迭代到 23 次)。增长幅度没有你直觉中预期的那么大。

故事的寓意

啊哈! 当你意识到,迭代不仅能够保证解决问题,而且与你的解决方案的初始猜测值是好是坏也没有关系。 不论你最初理解得多么不正确,迭代过程以及可衡量的测试/目标,都可以使你走上正确的道路并得到解决方案。

图 4 和 5 显示了陡峭而戏剧性的燃尽图。一个非常错误的开始,迭代很快就产生了一个绝对正确的解决方案。

简而言之,这种神奇的方法就是敏捷 DevOps 的本质。

回到一些更深层次的观察

敏捷 DevOps 的实践源于人们对所生活的世界的认知。我们生活的世界存在不确定性、不完整性以及充满太多的困惑。从科学/哲学的角度来看,这些特征得到了 海森堡的不确定性原理 Heisenberg’s Uncertainty Principle (涵盖不确定性部分), 维特根斯坦的逻辑论哲学 Wittgenstein’s Tractatus Logico-Philosophicus (歧义性部分), 哥德尔的不完全性定理 Gödel’s incompleteness theorems (不完全性方面)以及 热力学第二定律 Second Law of Thermodynamics (无情的熵引起的混乱)的充分证明和支持。

简而言之,无论你多么努力,在尝试解决任何问题时都无法获得完整的信息。因此,放下傲慢的姿态,采取更为谦虚的方法来解决问题对我们会更有帮助。谦卑会给为你带来巨大的回报,这个回报不仅是你期望的一个解决方案,还会有它的副产品。

总结

大自然在不停地运作,这是一个持续不断的过程。大自然没有总体规划。一切都是对先前发生的事情的回应。 反馈循环是非常紧密的,明显的进步/倒退都是逐步实现的。大自然中随处可见,任何事物的都在以一种或多种形式逐步完善。

敏捷 DevOps 是工程模型逐渐成熟的一个非常有趣的结果。DevOps 基于这样的认识,即你所拥有的信息总是不完整的,因此你最好谨慎进行。获得可衡量的测试(例如,假设、可测量的期望结果),进行简单的尝试,大多数情况下可能失败,然后收集反馈,修复故障并继续测试。除了同意每个步骤都必须要有可衡量的假设/测试之外,没有其他方法。

在本系列的下一篇文章中,我将仔细研究变异测试是如何提供及时反馈来推动实现结果的。


via: https://opensource.com/article/19/8/mutation-testing-evolution-tdd

作者:Alex Bunardzic 选题:lujun9972 译者:Morisun029 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

开源社区和行业趋势的每周总览。

 title=

作为我在具有开源开发模型的企业软件公司担任高级产品营销经理的角色的一部分,我为产品营销人员、经理和其他影响者定期发布有关开源社区,市场和行业趋势的定期更新。以下是该更新中我和他们最喜欢的五篇文章。

《Java 还有用吗?》

负责 Java Enterprise Edition(现为 Jakarta EE)的 Eclipse 基金会执行董事 Mike Milinkovich 也认为 Java 本身将不断发展以支持这些技术。“我认为 Java 将从 JVM 一直到 Java 本身都将发生变化,”Milinkovich 表示,“因此,JVM 中任何有助于将 JVM 与 Docker 容器集成在一起,以及能够更好地在 Kubernetes 中对 Docker 容器进行检测的新特性,都将是一个巨大的帮助。因此,我们将期待 Java SE 朝着这个方向发展。”

影响:Jakarta EE 是 Java Enterprise Edition 的完全开源版本,奠定了 Java 未来发展的基础。一些 Java 有用论来自于在用 Java 开发中花费的令人难以置信的成本,以及软件开发人员在用它解决问题方面的多年经验。将其与生态系统中的创新相结合(例如,请参见 Quarkus 或 GraalVM),答案必须是“是”。

《GraalVM:多语言 JVM 的圣杯?》

虽然大多数关于 GraalVM 的宣传都是围绕着将 JVM 项目编译成原生的程序,但是我们仍可以发现它的 Polyglot API 有很多价值。GraalVM 是一个引人注目的、已经完全可以用来替代 Nashorn 的选择,尽管迁移的路径仍然有一些困难,主要原因是缺乏文档。希望这篇文章能帮助其他人找到离开 Nashorn 通往圣杯之路。

影响:对于开放源码项目来说,最好的事情之一就是用户开始对一些新奇的应用程序赞不绝口,即使这些应用程序不是主要用例。“是的,听起来不错,我们甚至没有使用过那个功能(指在 JVM 上运行本地语言)……,(都可以感受得到它的优势,)然而我们使用了它的另一个功能(指 Polyglot API)!”

《你可以说我疯了,但 Windows 11 或可以在 Linux 上运行》

微软已经做了一些必要的工作。Windows 的 Linux 子系统(WSL)的开发人员一直在致力于将 Linux API 调用映射到 Windows 中,反之亦然。在 WSL 的第一个版本中, 微软将 Windows 本地库、程序以及 Linux 之间的关键点连接起来了。当时,Carmen Crincoli 发推文称:“2017 年归根结底还是 Linux 桌面年。只不过这个桌面是 Windows。”Carmen Crincoli 是什么人?微软与存储和独立硬件供应商的合作伙伴经理。

影响Hieroglyph 项目 的前提是“一部好的科幻小说都有一个对未来的愿景……是建立在现实主义的基础上的……(而这)引发我们思考自己的选择和互动对创造未来做出贡献的复杂方式。”微软的选择以及与更广泛的开源社区的互动是否可以导致科幻的未来?敬请关注!

《Python 正在吞噬世界:一个开发人员的业余项目如何成为地球上最热门的编程语言》

还有一个问题是,监督语言开发的机构“Python 核心开发人员和 Python 指导委员会”的组成是否能更好地反映 2019 年 Python 用户群的多样性。

Wijaya 称:“我希望看到在所有不同指标上都有更好的代表,不仅在性别平衡方面,而且在种族和其它所有方面。”

“在 PyCon 上,我与来自印度和非洲的 PyLadies 成员进行了交谈。他们评论说:‘当我们听说 Python 或 PyLadies 时,我们想到的是北美或加拿大的人,而实际上,世界其它地区的用户群很大。为什么我们看不到更多?’我认为这很有意义。因此,我绝对希望看到这种情况发生,我认为我们都需要尽自己的一份力量。”

影响: 在这个动荡的时代,谁不想听到一位仁慈独裁者(指 Python 创始人)把他们项目的统治权移交给最经常使用它的人呢?

我希望你喜欢这张上周让我印象深刻的列表,并在下周一回来了解更多的开放源码社区、市场和行业趋势。


via: https://opensource.com/article/19/9/java-relevant-and-more-industry-trends

作者:Tim Hildred 选题:lujun9972 译者:laingke 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

云原生是什么?

技术圈总是在不停地蹦各种新名词。也不知道从什么时候开始,人们慢慢不怎么提“云计算”这个名词了,而是频繁提到一个新名词“云原生”,好像不这么提就不足以体现云计算原住民的身份。不过,要真的问什么是“云原生”,其实很多人都说不太清楚。随着云原生生态如火如荼的发展,甚至连 CNCF 官方都觉得有必要专门做个定义出来:

前一段时间,我在云栖大会上见到了阿里云的李响,就有人问他,“怎么理解‘云原生’?”作为 CNCF 的技术监督委员会成员的李响,以他的角度对此作了阐释:

“我觉得云原生本身实际上就是比较泛的概念,它最终的目标就是利用云上的资源、云上的服务来重构软件开发以及运行时的生命周期。简而言之就是怎么更好利用云。……随着云的发展,云原生本身也会有一些变化,大家接受云原生的理念和实现云原生的情况也会有变化。……我觉得不用太把云原生本身在一个框框里圈定,它更多还是一个核心的概念——更好地利用云释放云的红利,产生相关的技术让大家去实践。”

在我看来,虽然现在云原生的概念的内涵和外延都在不断的变化当中,但是不可否认的是,云计算生态已经从最初的巨石应用、刚性的分布式计算逐渐演变到原生地基于云计算环境进行设计、开发、部署、运维和弹性伸缩。可以说,云原生重新定义了云计算。

借助于云原生技术,一个计算系统可以很便捷的从一个环境中迁移至另外一个环境当中,而这在之前几年,几乎还是不可想象的。就这个场景,阿里云举了一个例子:比如像三维家,他们在上海云栖大会上宣布了全站上云的消息,因为他们已经应用了云原生的方式,仅花了三天把全部业务迁到阿里云上。而在迁移之后,三维家现在可以利用云原生的方式可以充分发挥云计算的弹性,三分钟之内就可以创建 100 个神龙节点去应对突发的业务需求,极大提升企业 IT 的灵活性,并且降低了 IT 成本。三维家表示,“阿里云的容器生态系统打造得非常完善,从监控、日志、服务暴露、应用拓扑、伸缩扩容方面能够做的更加灵活;基础设施的建设和维护稳定性交给阿里云,目前没有出现过问题。”

云原生进化

今年我参加云栖大会,有一个明显的感受就是,阿里云在不断的大声谈论云原生。事实上阿里云早已是云原生计算基金会的成员(现在是白金成员),也在这个领域耕耘良久,但是今年,无论是多到你参加不过来的各种主题演讲,还是各种产品和服务的消息,都在不断的讲,云原生、云原生……

在过去大家更多是把互联网和移动互联网的应用,大部分是无状态应用部署在容器平台之上,今年越来越多的企业开始把有状态的应用、交易类的应用以原生化的方式进行交付,进行自动化的运维。

这次云栖大会上阿里云还发布了 ACK 2.0。ACK 是阿里云容器服务 Kubernetes 版,它提供了高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理,简化了集群的搭建和扩容等工作,整合了阿里云虚拟化、存储、网络和安全能力,以打造云端最佳的 Kubernetes 容器化应用运行环境。

关于阿里云容器服务,阿里云的易立说,从 2015 年底公测、2016 年中正式上线到现在的 4 年时间发展非常快,现在已经覆盖了阿里云全球 20 个地域,支撑了国内外数千家客户的生态系统。同时容器产品在持续保持增长,过去 3 年都能保持 400% 以上的增长速度,现在一个月下载次数超过 3 亿次。今年在 Forrester 全球公共云容器平台的评测里面,阿里云是国内排名第一,在 Gartner 报告也唯一入选公共云容器平台竞争格局。

阿里云容器服务优化整合了阿里云整体的计算、存储、网络、安全等核心能力。

比如说计算,不但能够支持强大虚拟机,像神龙这样的裸金属服务,还有异构计算的 CPU、GPU,未来也会包括云栖大会当天发布的含光芯片,通过容器的高效调度能够让 GPU 的利用率提升了 5 倍,而且容器产品能充分把计算资源弹性发挥出来,可以实现分钟级千节点的弹性伸缩,这对客户来说是非常重要的。

而在容器网络方面,它和阿里云的虚拟化网络进行了优化集成,可以实现原生网络一样的性能,与社区的 VXLAN 实现相比提升了 20% 性能。

在存储方面支持阿里云所有的存储产品,包括块存储、网络存储、对象存储等。针对容器场景进行了很多创新,比如说容器高密度部署时容器之间会对 I/O 进行争抢,通过跟操作系统团队进行深入合作,实现了更好的存储 I/O 隔离。另外,还实现了透明、高效的存储缓存,可以低成本支持像高性能计算和AI场景下大数据吞吐量的需求。

本次云栖大会上阿里云发布的 ACK 2.0 面向云原生进化,最重要的是它为整个企业上云奠定了一个新的基石。首先是容器服务全球化的部署,利用在阿里巴巴集团的大规模生产实践沉淀,建立了这样的基础设施。其次,云边端一体化可以实现边缘节点极大降低访问的延迟降低 75%。第三,可以让客户把他的私有云和云端利用 Kubernetes 进行统一管理,应用发布效率可以提升三倍,另外,还提供了全链路的安全架构,对安全风险进行监控。

对于云原生的发展,作为阿里云内部基础设施负责人的李响,在帮助阿里经济体以更为云原生的方式上云,在推动阿里经济体采用 Kubernetes、Service Mesh、Serverless 这些技术。他谈到:

“阿里和蚂蚁有着最大的 Kubernetes 集群,我们对 Kubernetes 上游拓展性、功能性是最大的贡献者之一,我们今年尝试落地Service Mesh,之前大家对 Service Mesh 的疑问是,它能不能应对一个复杂的场景,尤其和传统的微服务体系对接的场景。在阿里巴巴内部要验证这件事情,我们要告诉大家可以做到,而且我们要告诉大家怎么做到,后续会提供解决方案让大家去做这件事情。

第二,大家会思考 Service Mesh 的规模性是不是足够,阿里巴巴其实有巨大规模性的挑战,我们也会解决 Service Mesh 规模性的问题。我们认为阿里巴巴能够使用 Service Mesh,我想世界上 99% 的公司都可以使用 Service Mesh, 而不会遇到它的规模性问题。

第三,Service Mesh 是不是会影响核心链路上的性能问题,会不会影响在核心时刻的性能。我们也会在双 11 这种洪峰流量,对流量要求极高的情况下去验证 Service Mesh,使用 Service Mesh,去打磨 Service Mesh,所有打磨的东西会反馈到上流,让用户、开发者享受到这种红利。

第四,阿里巴巴通过这些事情培养出一批靠谱的工程师,我们有非常强的兜底能力,当用户遇到任何问题,阿里巴巴都能帮你解决问题,阿里巴巴真的是运营这套体系的,有这个生产实践的经验。

阿里巴巴真正把‘云原生’新的概念,在我们认为正确的方向进行落地、进行打磨,最后交付给客户。所有这些东西,当我们说阿里巴巴云上有这样的产品,一定是可靠的,一定是稳定的。”

容器安全是重点

当然我们也看到企业客户在使用云原生技术过程中面对几个挑战,第一个挑战就是安全。

安全是企业上云的首要关注。云原生加剧了这个挑战,云原生平台高密度、高动态部署使得遭受攻击可能性增加,而且一旦遭受攻击,用户不知道是谁受到攻击,也没有办法实时应对。

安全是体系性的东西,永远在最弱的一环去攻破整个企业的安全体系。阿里云容器服务实现了非常全面的端到端的云原生安全的架构,包括基础设施的安全,跟阿里云的云安全基础设施紧密基础,利用 RAM 进行认证、鉴权和审计,支持存储的 BYOK 加密等,提供了一个安全的云基础设施。

同时,在应用的生命周期里面用了安全的镜像检测,上线之前要进行扫描,上线之后会进行实时的安全检测。还有运行时的安全,因为安全的风险无处不在,一旦出现了安全问题必须第一时间对它进行监控、报警。

对于企业来讲,大量采用容器之后面临的挑战之一就是安全隔离。比如说一台机器上要混布多种类型的应用,但是有些像金融交易的应用,安全级别敏感性会很高,不希望受到其他应用的攻击和干扰。另外企业除了自己的应用还要部署第三方应用,这个过程中对一些不可信的应用要进行安全的隔离,阿里云引入了安全沙箱一系列的技术。传统的容器 RunC 用是共享内核的机制,很高效,但是安全隔离做得不好,现在可以利用安全沙箱可以进行安全隔离。

在这方面阿里云有一些差异化的优势:首先就是对它进行大量的性能优化,比如说它的网络跟原生的进程没有任何区别,网络性能非常好。整体能够达到 90% 的原生性能,对用户来讲可以获得非常好的安全性,同时对性能损耗是可以接受的。另外,能够让用户自主选择是 RunC 还是安全沙箱,两种容器运行时用户体验是完全一致的,用户可以根据自己对业务需求来选择合适的容器应用技术。

在安全容器领域有几个重要的项目,如 Google 的 gVisor,以及已经属于蚂蚁金服旗下的 Kata 容器项目等,不过和易立的沟通当中,我了解到阿里云容器服务的安全容器所采用的技术并非照搬 Kata 容器技术,而是集成了目前主流的安全容器项目,加以自身的创新而成的。阿里经济体实际上在容器安全方面投入非常大,包括 Kata,还有其他几种技术。他们与蚂蚁金服、阿里的操作系统团队合作一起来提供这样商业化安全容器的实现。这次发布的安全沙箱容器底层技术针对阿里云进行了大量优化,跟 Kata 技术有些类似,但是里面有很多部分不同,性能也做了大量的优化。

现在提供的是基于虚拟化隔离的安全技术,后续会陆续提供其他的技术能力,它们的隔离级别和适用场景是不同的,用户只要去选择就好了,在保证用户体验是一致的基础上,对用户是透明的。

结语

我们看到,阿里云正在云原生的路上狂奔,将各个产品、服务都押宝在元原生的领域上。最后,让我们用李响的一段话来结束这篇文章:“新兴的应用,或者是新兴的领域,我们建议你使用容器轻量级自动化平台,现在我们阿里云、ACK 都是朝着这种模式跟大家宣导的。我们要去帮助开发者,引导开发者从非原生的体系向云原生体系去转移,我觉得这条道路非常重要,这也是阿里云的责任,带动整个国内的基础设施,带动国内云原生体系发展,我们要去承担这件事情。”