基于阿里云打造『云原生』Web应用——『懒猪行』Web应用开发实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
日志服务 SLS,月写入数据量 50GB 1个月
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 『懒猪行』专注于境外自由行S2B业务,涉及分销、终端用户服务、供应链等多个服务环节,随着业务规模的不端增加,我们一直在探索Web应用开发的最佳实践,以加快Web应用的迭代效率,为B/C端用户创造更多价值。

作者:阿里云MVP 刘远程

背景
『懒猪行』专注于境外自由行S2B业务,涉及分销、终端用户服务、供应链等多个服务环节,随着业务规模的不端增加,我们一直在探索Web应用开发的最佳实践,以加快Web应用的迭代效率,为B/C端用户创造更多价值。

云原生
近几年,Spring Cloud为代表的微服务架构越来越火热,吸引了大量创业公司『入坑』。微服务系统的开发与单体应用的开发相比,从团队组织、运维、开发方式等多个方面带来了颠覆式的变化。从2018年开始以Istio、SOFAMesh等为代表的Service Mesh方案逐渐走上舞台,并被称为『下一代微服务架构』。

如果把以容器技术和Service Mesh为基础的IT架构定义为云原生架构,那么Dubbo、Spring Cloud为代表的分布式架构将是促进云原生架构诞生的『中间产物』。

image

就在18年,云原生计算基金会(CNCF)为云原生技术重新定义:
Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
『云原生技术帮助公司和机构在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。』
These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.
『这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术可以使开发者轻松地对系统进行频繁并可预测的重大变更。』
这种新颖架构方式,不仅提供了完善的软件持续交付链方案,也为我们的应用组织方式带来了巨大的想象空间,甚至在将来可能给整个软件行业带来颠覆式的革命。有一点是显而易见的:原本强耦合在一起的应用被拆分,变身成为能够实现完整子集功能的可插拔式微服务,通过有机的组织让其与其它微服务共同对外提供服务;就如同组装汽车的发动机和座椅等,它可以来自全球供应链不同的厂商。以云原生的设计哲学来总结,云原生应用具备微服务,健康报告,遥测数据,弹性声明式(非反应式)等特征。

云原生所带来的效果非常明显,但完整的实践确是很容易让人知难而退,因为单Kubernetes一项,从入门到掌握也需要花费3个月左右的时间。但幸运的是,阿里云等公有云平台已经为我们准备好了容器服务(Kubernetes版)产品,并支持通过Kubernetes进行应用的容器化管理。
在容器服务内部,通过Istio声明式的定义不同服务间的通信方式和安全验证规则,这使我们的多个服务(例如:订单、产品、用户、评论等服务)安全、灵活的整合在一起。以官方Bookinfo示例架构图如下:

image

所有的微服务都和 Envoy sidecar 集成在一起,被集成服务所有的出入流量都被 sidecar 所劫持,这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能。

懒猪行的架构设计(简化)

在新的架构中,使用了大量的阿里云产品,这鉴于我们过去的经验,阿里云产品在运维上为我们节省了不少精力。

image

以上架构,是我们走向『云原生』的第一步,距离成熟还有非常大的发展空间,云原生的发展也在发展的起步阶段。按架构,把所有需要持久化的数据,如:文件、图片、数据库等存储到阿里云OSS、RDS及Redis产品,而应用则运行在以K8s管理调度的容器集群中。

阿里云DevOps工具链

阿里云在云原生架构整个生命周期都提供了完善的支持:

  1. 代码托管:阿里云Code
    阿里云Code在社区版Gitlab的基础上做了改造,成为阿里云应用构建工具链的『基石』,为项目团队提供私有化的代码托管和团队权限管理。
  2. 镜像托管:容器镜像服务
    容器镜像服务(Container Registry)提供安全的应用镜像托管能力,精确的镜像安全扫描功能,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。同时与阿里云Code、CodePipline产品无缝整合。
  3. 代码/Docker编译构建及发布:CodePipline
    兼容Jenkins标准的、提供快速可靠的持续集成与持续交付服务。基于容器技术和阿里云基础服务架构,提供稳定和安全的代码/Docker编译构建,测试,扫描和部署的工具服务。与Kubernetes的集成方式参见文档:

https://help.aliyun.com/document_detail/85946.html

  1. 容器管理:容器服务Kubernetes版
    容器服务Kubernetes版(Container Service for Kubernetes)提供高性能可伸缩的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,是实现云原生架构容器调度管理必不可少的工具。
  2. 日志归集分析:LOG日志服务
    阿里云LOG Serivce,,从服务器、容器、Web终端的日志收集,到日志内容的查询和实时分析,为日志的采集和分析提供了闭环的支持。
  3. 可用性监控:云监控
    主机、日志的服务可用性监控报警,及URL的站点全球可用性探测(云监控)。

推荐阅读:
[1] Service Mesher社区:http://www.servicemesher.com/
[2] Kubernetes Handbook:https://jimmysong.io/kubernetes-handbook/

MVP招募进行中,点击申请
image

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
20天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
113 45
|
3天前
|
监控 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
本文将深入探讨云原生技术如何改变现代企业的运作模式,提升业务灵活性和创新能力。通过实际案例分析,我们将揭示云原生架构的关键要素、实施步骤以及面临的挑战,为读者提供一套清晰的云原生转型指南。
|
1天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
13 2
|
12天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用开发中的实践与思考
【10月更文挑战第35天】云原生技术,作为云计算的进阶形态,正引领着软件开发和运维的新潮流。本文将深入探讨云原生技术的核心理念、关键技术组件以及在实际项目中的应用案例,帮助读者理解如何利用云原生技术优化应用架构,提高开发效率和系统稳定性。我们将从容器化、微服务、持续集成/持续部署(CI/CD)等角度出发,结合实际代码示例,展现云原生技术的强大能力。
|
10天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代软件开发中的应用与挑战
【10月更文挑战第37天】随着云计算技术的不断演进,云原生技术已经成为推动软件开发现代化的重要力量。本文将深入探讨云原生技术的核心概念、优势以及面临的挑战,并通过一个实际的代码示例,展示如何在云原生环境中部署一个简单的应用。我们将从云原生的基础架构出发,逐步引导读者理解其在现代软件开发中的关键作用。
22 1
|
15天前
|
前端开发 JavaScript 开发工具
从框架到现代Web开发实践
从框架到现代Web开发实践
25 1
|
15天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
31 1
|
18天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
18天前
|
前端开发 开发者 UED
移动优先:响应式设计在现代Web开发中的实践策略
【10月更文挑战第29天】在现代Web开发中,响应式设计已成为不可或缺的实践策略,使网站能适应各种设备和屏幕尺寸。本文介绍了移动优先的设计理念,对比了移动优先与桌面优先的策略,探讨了流式布局与固定布局的区别,详细讲解了CSS媒体查询的使用方法,并强调了触摸和手势支持及性能优化的重要性。
30 1
|
21天前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
32 2
下一篇
无影云桌面