# 3 Emerging Technologies Redefining Application Architecture

Technology is an evolving field and while I published a [separate article](https://vedcraft.com/tech-trends/top-ten-technology-trends-for-2022/) on a broader set of technologies getting momentum in 2022, this article’s focus is to highlight emerging technologies that started redefining software system architecture and product companies.

### #1 — eBPF: Redefining networking, security, and observability tools

> eBPF is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in a privileged context such as the operating system kernel (source: [ebpf.io](https://ebpf.io/what-is-ebpf))

-   eBPF (extended Berkeley Packet Filter) is the abstraction layer providing programmability at the Linux kernel level without rebuilding the kernel or loading any modules.
-   This opens up a huge set of opportunities not for application developers but for product developers of security, observability, and networking products.
-   Observability solution can now operate at instrumentation at node-level than instrumenting at Docker container-level providing accelerating performance and insights.
-   Security products can leverage fine-grained security with greater control and lower resource overhead with L3-L7 level operability. Cilium’s new [Tetragon](https://github.com/cilium/tetragon) component enables powerful real-time, eBPF-based security observability and runtime Enforcement.
-   Networking and infrastructure solution like service mesh have started applying eBPF-based solutions (e.g. [Cilium](https://cilium.io/)) to avoid the overhead of sidecars. 
-   The Istio community published a [whitepaper](https://istio.io/latest/zh/blog/2021/istiomeetups-china-report/IstioMeetupChina-AccelerateServiceMeshNetworkwithebpf.pdf) to start accelerating service mesh using eBPF as well. Linkerd and eBPF can also coexist as suggested in [this whitepaper](https://buoyant.io/2020/12/23/kubernetes-network-policies-with-cilium-and-linkerd/) where Cilium-based policies operate at the L3-L4 network level and Linkerd at the L7 network level.
-   [BumbleBee](https://www.solo.io/blog/get-started-with-ebpf-using-bumblebee/) is a great tool to get started with eBPF development.
-   Based on a recent article published by [Solo.io](https://www.solo.io/blog/ebpf-trends-2023/), below are the key trends driving eBPF adoption in the product industry:

![eBPF - Key Industry Trends](https://vedcraft.com/images/2023/03/ebpf-trends-1024x470.png)

eBPF — Key Industry Trends

**eBPF System Architecture** can be visualized as below:

![eBPF System Architecture Layers: 3 Emerging Technologies Redefining Application Architecture](https://vedcraft.com/images/2022/06/eBPF-1024x642.png)

eBPF System Architecture Layers

> While eBPF provides great benefits of speed and performance, sandboxed security, unified tracing, programmability at kernel level and much more, it is more suitable for software product developers than web application developers.

### #2 — WebAssembly: Redefining web application development

-   Released in 2017 by Mozilla, it has been accepted as a standard by W3C and is now supported by Mozilla, Microsoft, Google, Apple, Fastly, Intel, and Red Hat.

> WebAssembly (abbreviated _Wasm_) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.  
> – Definition by [webassembly.org](https://webassembly.org/)

-   [WebAssembly](https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts) (abbreviated as Wasm) is supported in all major browsers with the support of 40+ programming languages as a compilation target. With a small VM support in the browser, you can run Wasm binary code (written in a supported language) using JavaScript. This opens up a wide array of possibilities in writing near-native, high-performance, efficient web applications. Note that Wasm is not a replacement for JavaScript.
-   While C, C++, Rust, and Golang are the best supported for production-grade WebAssembly, other languages have started maturing as well. [Click here](https://github.com/ankurkumarz/technical-experiments/tree/main/content/docs/programming/rust-webassembly) to see a working code example using Rust with WebAssembly.
-   [Emscripten](https://emscripten.org/) is a complete compiler toolchain to WebAssembly, using LLVM, with a special focus on speed, size, and the Web platform. Don’t worry as you can use language-specific abstraction/tool to handle the generation.
-   For Python, [PyScript](https://pyscript.net/) has been announced in [PyCon 2022](https://us.pycon.org/2022/schedule/presentation/53/) to support WebAssembly.
-   For Java, [GraalVM](https://www.graalvm.org/22.1/reference-manual/wasm/), [Wasmer](https://github.com/wasmerio/wasmer-java), [JWebAssembly](https://github.com/i-net-software/JWebAssembly), and [TeaVM](https://teavm.org/) have started providing support for WebAssembly.
-   Docker is in the process of integrating Wasm and currently is in technical preview mode. It now supports multiple runtime engines such as [Fermyon’s spin](https://www.fermyon.com/cloud), [Deislabs’ slight](https://deislabs.io/tags/slight/), and [Bytecode Alliance’s Wasmtime](https://bytecodealliance.org/). Read more about Docker+Wasm by [clicking here](https://docs.docker.com/desktop/wasm/).

Below are reference set of development steps for building a WebAssembly program:

![Development using WebAssembly](https://vedcraft.com/images/2022/06/Wasm-Sequence.png)

Development using WebAssembly

### #3 — Rust: Redefining systems programming and beyond

-   [Rust Foundation](https://foundation.rust-lang.org/) got established in 2020 with support from companies like AWS, Google, Huawei, Microsoft, and Mozilla.
-   For the sixth consecutive year, Rust is the most loved language by developers as part of [Stack Overflow developer’s survey](https://insights.stackoverflow.com/survey/2021#most-loved-dreaded-and-wanted-language-love-dread).
-   Rust is becoming the preferred language of choice for systems programming primarily because of low-level memory management, higher performance, and safe concurrency benefits.
-   AWS has declared it as its language of choice for systems programming and is being used for [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3), [Amazon Elastic Compute Cloud](https://aws.amazon.com/ec2) (Amazon EC2), [Amazon CloudFront](https://aws.amazon.com/cloudfront/), and more. [Click here](https://aws.amazon.com/blogs/opensource/sustainability-with-rust/) to read more.
-   Rust for WebAssembly ([wasm-pack](https://github.com/rustwasm/wasm-pack)) support is available to leverage Rust for building fast-paced web applications though it is relatively a new field. [Click here](https://github.com/ankurkumarz/technical-experiments/tree/main/content/docs/programming/rust-webassembly/code/rust-wasm) to see a working code example invoking the Rust function from HTML & JavaScript.
-   While web development is still maturing for Rust, there are multiple web frameworks available such as [Rocket](https://rocket.rs/), [Actix](https://actix.rs/), [Gotham](https://gotham.rs/), and [more](https://blog.logrocket.com/current-state-rust-web-frameworks/#actix) (see the below diagram or [click here](https://blog.logrocket.com/current-state-rust-web-frameworks/) to read more about the state of web frameworks in Rust).

![Rust Backend Web Frameworks: 3 Emerging Technologies Redefining Application Architecture](https://cdn-images-1.medium.com/max/800/1*pdIY5nuJKb2ens1L2GLt-w.png)

Rust Backend Web Frameworks

> While Rust is one of the most competitive programming language when it comes to systems programming and tools development (e.g. AWS CLI, networking tools, etc.), it’s suitability for web development (e.g. REST API) is still evolving and other languages (Java, Python, Go, etc.) are more preferred for it.

Rust adoption by industry and companies are growing — below is a snapshot of companies using Rust ([click here](https://github.com/omarabid/rust-companies) for the complete list):

![3 Emerging Technologies Redefining Application Architecture](https://vedcraft.com/images/2023/03/rust-adoption.png)

Rust Adoption by Tech Companies

To conclude, while there are various emerging technologies in different domains — these three technologies are on top of the list in software architecture conferences, technology blogs, design discussions, and more. They are going to reshape the future state of application architecture and will help build faster, more secure, scalable, nimble, highly available, and innovative products for different business domains.

![3 Emerging Technologies Redefining Application Architecture](https://vedcraft.com/images/2023/03/emerging-tech-1024x457.png)

3 Emerging Technologies Redefining Application Architecture

## Related Articles

-   [Top 10 Tips You Should Know As A Software Architect](https://vedcraft.com/architecture/top-10-tips-you-should-know-as-a-modern-software-architect/)
-   [Essential Engineering Skills For A Software Architect](https://vedcraft.com/architecture/essential-engineering-craft-for-every-software-architect/)
-   [The Latest Trends in Serverless Application Development](https://vedcraft.com/tech-trends/the-latest-trends-in-serverless-application-development/https://vedcraft.com/tech-trends/the-latest-trends-in-serverless-application-development/)
