alguidelines/content/_index.md
2022-02-20 13:06:34 +01:00

526 lines
No EOL
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "ALGuidelines.dev"
linkTitle: "ALGuidelines.dev"
description: "Design Patterns and Guidelines for AL development for Microsoft Dynamics 365 Business Central"
images: ["images/og-image-fission.png"]
---
<div class="hero">
<div class="container">
<div class="row justify-content-center align-items-center">
<div class="col-xl-7 col-lg-6 col-md-6 hero-section-mobile">
<h1 class="hero-title">
Guidelines and Patterns<br />
for AL for<br />
Microsoft Dynamics 365 Business Central
</h1>
<img
class="img-fluid hero-banner show-mobile-big"
src="/images/fission-illustration.svg"
alt-text="Fission Banner"
/>
<br />
<a href="/docs/installation/"
><button class="hero-big">
<img
src="/images/github-icon.png"
width="22px"
style="margin-right: 12px"
/>Install Fission
</button></a
>
</div>
<div class="col-xl-5 col-lg-6 col-md-6 show-desktop-big">
<img
class="img-fluid hero-banner"
src="/images/fission-illustration.svg"
alt-text="Fission Banner"
/>
</div>
</div>
</div>
</div>
<div class="body-container">
<div class="container">
<br />
<div class="row">
<div class="col-lg-5">
<h2 class="section-title">What is Fission?</h2>
<p class="section-text-bold">
Fission is a framework for serverless functions on Kubernetes.
</p>
<p class="section-text">
Write short-lived functions in any language, and map them to HTTP
requests (or other event triggers).
</p>
<p class="section-text">
Deploy functions instantly with one command. There are no containers
to build, and no Docker registries to manage.
</p>
<a href="/docs/installation/"
><button class="hero-mid">Learn More &amp; Install Fission</button></a
>
</div>
<div class="col-lg-7">
<img
class="img-fluid show-mobile-margin"
src="/images/body-img-1.svg"
alt-text="Fission Banner"
/>
</div>
</div>
</div>
</div>
<div class="wide-image show-desktop">
<img src="/images/wave.webp" class="big-waves" />
</div>
<div class="body-container push-up">
<div class="container">
<div class="row">
<div class="col-lg-12 center-text" style="margin-bottom: 50px">
<h2 class="section-title">Benefits</h2>
</div>
<div class="col-lg-4">
<div class="card-shadow">
<img src="/images/focus.svg" width="50px" class="img-card" />
<h4 class="section-text-bold">Focus on Code,<br />Not Plumbing</h4>
<p class="section-text">
Fission lets developers run code functions easily, while automating
the menial work of configuring Kubernetes micro-services concepts
behind the scenes. Just write your code functions and Fission will
make it run on Kubernetes.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="card-shadow">
<img src="/images/portable.svg" width="50px" class="img-card" />
<h4 class="section-text-bold">
Portable: Run your Lambda-like service, anywhere
</h4>
<p class="section-text">
Fission is open source under the Apache license. Fission works on a
Kubernetes cluster anywhere: on your laptop, in any public cloud, or
in a private data-center. Write your application with the
flexibility of deploying it anywhere.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="card-shadow">
<img src="/images/extensible.svg" width="50px" class="img-card" />
<h4 class="section-text-bold">
Extensible and<br />
Customizable
</h4>
<p class="section-text">
Fission is extensible to any programming language (Python, NodeJS,
Go, C#, PHP are supported today). It abstracts away containers by
default, but you can build your own containers if you need to.
</p>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row feature-section">
<div class="col-lg-12 center-text" style="margin-bottom: 50px">
<h2 class="section-title">Features</h2>
</div>
<div class="col-lg-4">
<div class="feature-card">
<div class="card-header-custom">
<img
src="/images/kubernetes-native.svg"
width="36px"
class="img-card-header"
/>
<h4 class="section-text-bold">Kubernetes Native</h4>
</div>
<p class="section-text">
Fission is open source under the Apache License. It works on a
Kubernetes cluster anywhere: in your private datacenter, in a public
cloud, or on your laptop.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="feature-card">
<div class="card-header-custom">
<img
src="/images/fast-cold.svg"
width="36px"
class="img-card-header"
/>
<h4 class="section-text-bold">Fast Cold-Start</h4>
</div>
<p class="section-text">
Fission maintains a configurable pool of containers, so your
functions have very low cold-start latencies, typically ~100msec.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="feature-card">
<div class="card-header-custom">
<img
src="/images/declarative.svg"
width="36px"
class="img-card-header"
/>
<h4 class="section-text-bold">
Declarative Application Specifications
</h4>
</div>
<p class="section-text">
Declarative specifications give the developer the capability to
define a function once and then deploy it anywhere. Fission
resources (functions, triggers etc.) can be checked into source
control, and the application can be recreated from them.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="feature-card">
<div class="card-header-custom">
<img
src="/images/administration.svg"
width="36px"
class="img-card-header"
/>
<h4 class="section-text-bold">
Administration & Operational Simplicity
</h4>
</div>
<p class="section-text">
Fission aims for operational simplicity by incorporating logs
directly into the CLI, via integration with Fluentd. It also
integrates with Prometheus for metrics tracking and dashboard
visibility.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="feature-card">
<div class="card-header-custom">
<img src="/images/istio.svg" width="36px" class="img-card-header" />
<h4 class="section-text-bold">Istio Service-mesh Integration</h4>
</div>
<p class="section-text">
Fission integrates with Istio, which is an open platform to connect,
manage and secure micro-services. With Istio, users also get the
ability to monitor function usage and trace request latency through
dashboards.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="feature-card">
<div class="card-header-custom">
<img
src="/images/language.svg"
width="36px"
class="img-card-header"
/>
<h4 class="section-text-bold">Wide Language Support</h4>
</div>
<p class="section-text">
Fission is extensible to any programming language of your choice.
Python, NodeJS, Go, C#, PHP are supported today, but you can build
your own custom containers if you need to.
</p>
</div>
</div>
<div class="col-lg-4">
<div class="feature-card">
<div class="card-header-custom">
<img
src="/images/autoscaling.svg"
width="36px"
class="img-card-header"
/>
<h4 class="section-text-bold">Function Autoscaling</h4>
</div>
<p class="section-text">
Fission provides autoscaling for functions based on CPU usage. In
the future, custom metrics will be also supported for scaling
functions. You can set the initial and maximum CPU for a function
and target CPU at which autoscaling will be triggered.
</p>
</div>
</div>
</div>
</div>
</div>
<div class="wide-image show-desktop">
<img src="/images/wave.webp" class="big-waves" />
</div>
<div class="body-container push-up">
<div class="container">
<div class="row">
<div class="col-lg-12 center-text" style="margin-bottom: 50px">
<h2 class="section-title">Use Cases</h2>
</div>
<div class="col-lg-10 center-text info-card" style="margin-bottom: 50px">
<h3 class="section-text-bold">Build Serverless API Backends</h3>
<p class="section-text">
Create API backends for web and mobile apps without managing servers.
Just write functions, and map them to HTTP routes. Fission takes care
of the rest: deployment, routing, scalability, availability. Use
Kubernetes service discovery and networking to interoperate with
other services, like Redis, Postgres, Etcd etc.
</p>
<img
src="/images/use-case-1.png"
class="img-fluid"
alt-text="Build Serverless API Backends use case diagram"
/>
<br /><br />
</div>
<div class="col-lg-10 center-text info-card" style="margin-bottom: 50px">
<h3 class="section-text-bold">Easily Implement Webhooks</h3>
<p class="section-text">
Webhooks are a popular way to integrate with third-party services.
Slack provides webhooks that are triggered by certain words or
messages; GitHub provides webhooks triggered by events in Git
repositories. Fission is a great place to implement webhooks: just
write the code, map it to a URL, and point the webhook at that URL.
</p>
<img
src="/images/use-case-2.png"
class="img-fluid"
alt-text="Easily implement webhook use case diagram"
/>
<br /><br />
</div>
<div class="col-lg-10 center-text info-card" style="margin-bottom: 50px">
<h3 class="section-text-bold">Write Kubernetes Event Handlers</h3>
<p class="section-text">
By subscribing to Kubernetes watches, you can write custom automation
for your Kubernetes infrastructure. Fissions integration with
Kubernetes watches allows you to monitor resources such as Pods and
Services, and execute arbitrary functions when the watched set of
resources change.
</p>
<img
src="/images/use-case-3.png"
class="img-fluid"
alt-text="Write Kubernetes Event Handlers use case diagram"
/>
<br /><br />
</div>
</div>
</div>
</div>
<div class="body-container whats-new">
<div class="container">
<div class="row">
<div class="col-lg-12 center-text" style="margin-bottom: 40px">
<h2 class="section-title">What's New</h2>
</div>
<div class="col-lg-4">
<div class="card-shadow">
<span class="card-badge">FISSION DZONE REFCARD</span>
<h4 class="section-text-bold mt-4">
New! Download the <span class="d-lg-block">Fission.io Refcard</span>
</h4>
<div class="card-shadow-content">
<p class="section-text">
Get started with Serverless on Kubernetes in 5 minutes! Learn how
to set up Fission, its key concepts, how to create and invoke a
function, monitor its performance, and more.
</p>
<a
href="https://platform9.com/wp-content/uploads/2019/03/dzone-refcard-fissionio.pdf"
><button class="hero-mid align-self-end">Download Now!</button></a
>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card-shadow">
<span class="card-badge">BLOG</span>
<h4 class="section-text-bold mt-4">
Fission PostgreSQL Database <span class="d-lg-block">Sample</span>
</h4>
<div class="card-shadow-content">
<p class="section-text">
Learn how to use Fission functions with PostgreSQL database and
perform basic operations on it.
</p>
<a href="/blog/how-to-use-postgresql-database-with-fission-functions/"
><button class="hero-mid-2 align-self-end">Read More</button></a
>
</div>
</div>
</div>
<div class="col-lg-4">
<div class="card-shadow">
<span class="card-badge">BLOG</span>
<h4 class="section-text-bold mt-4">
Next.js Application with <span class="d-lg-block">Fission</span>
</h4>
<div class="card-shadow-content">
<p class="section-text">
Learn how you can create a Next.js application with Fission.
We create a Next.js blog in this tutorial.
</p>
<a
href="/blog/serverless-next.js-example-blog-with-fission/"
><button class="hero-mid-2 align-self-end">Read More</button></a
>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="body-container">
<div class="container">
<div class="row">
<div class="col-lg-4">
<br />
<br />
<h1 class="section-title">Join the Community</h1>
<br />
<div class="show-mobile">
<div class="community-cards">
<a href="/slack"
><div class="card-shadow">
<div class="card-header-custom">
<img
src="/images/slack.svg"
width="30px"
class="img-card-header"
/>
<p class="section-text-bold">Slack</p>
</div>
<p class="section-text">
Join the Fission community to engage with the fission team,
interact with other users, and contribute ideas and feedback.
</p>
</div></a
>
<a href="https://github.com/fission"
><div class="card-shadow">
<div class="card-header-custom">
<img
src="/images/github.svg"
width="30px"
class="img-card-header"
/>
<p class="section-text-bold">GitHub</p>
</div>
<p class="section-text">
Dive into the code and learn more about Fission. Submit PRs
and collaborate with other like-minded contributors.
</p>
</div></a
>
<a href="https://twitter.com/fissionio"
><div class="card-shadow twitter-card" style="margin-left: auto">
<div class="card-header-custom">
<img
src="/images/twitter.svg"
width="36px"
class="img-card-header"
/>
<p class="section-text-bold">Twitter</p>
</div>
<p class="section-text">
Follow us <b class="text-highlight">@fissionio</b> to stay up
to date with Fission news.
</p>
</div></a
>
</div>
</div>
</div>
<div class="col-lg-8 community-cards show-desktop">
<div class="row">
<div class="col-lg-6">
<a href="/slack"
><div class="card-shadow">
<div class="card-header-custom">
<img
src="/images/slack.svg"
width="30px"
class="img-card-header"
/>
<p class="section-text-bold">Slack</p>
</div>
<p class="section-text">
Join the Fission community to engage with the fission team,
interact with other users, and contribute ideas and feedback.
</p>
</div></a
>
</div>
<div class="col-lg-6">
<a href="https://github.com/fission"
><div class="card-shadow">
<div class="card-header-custom">
<img
src="/images/github.svg"
width="30px"
class="img-card-header"
/>
<p class="section-text-bold">GitHub</p>
</div>
<p class="section-text">
Dive into the code and learn more about Fission. Submit PRs
and collaborate with other like-minded contributors.
</p>
</div></a
>
</div>
<div class="col-lg-6">
<a href="https://twitter.com/fissionio"
><div
class="card-shadow twitter-card-desktop"
style="margin-left: auto"
>
<div class="card-header-custom">
<img
src="/images/twitter.svg"
width="36px"
class="img-card-header"
/>
<p class="section-text-bold">Twitter</p>
</div>
<p class="section-text">
Follow us <b class="text-highlight">@fissionio</b> to stay up
to date with Fission news.
</p>
</div></a
>
</div>
</div>
</div>
</div>
</div>
</div>