<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Projects on Business Information Technology Services</title>
        <link>https://www.bitservices.io/categories/projects/</link>
        <description>Recent content in Projects on Business Information Technology Services</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <copyright>BITServices Ltd</copyright>
        <lastBuildDate>Mon, 01 Aug 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://www.bitservices.io/categories/projects/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Smartr365</title>
        <link>https://www.bitservices.io/projects/smartr365/</link>
        <pubDate>Mon, 01 Aug 2022 00:00:00 +0000</pubDate>
        
        <guid>https://www.bitservices.io/projects/smartr365/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.smartr365.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.bitservices.io/img/smartr365/logo.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Smartr365&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A part time project where the main goal was to implement &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/products/frontdoor/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Azure Front Door&lt;/a&gt;
into the existing infrastructure automation to improve security and
performance of an application with hundreds of tenants.&lt;/p&gt;
&lt;h1 id=&#34;azure-front-door&#34;&gt;Azure Front Door
&lt;/h1&gt;&lt;p&gt;Performance improvements were achieved by leveraging caching, compression and
the content delivery network to service static and cached content from regional
distribution points.&lt;/p&gt;
&lt;p&gt;To improve security &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/products/frontdoor/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Azure Front Door&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/products/web-application-firewall/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Web Application Firewall&lt;/a&gt; (WAF) was
used to identify improvements in the application such as ways to filter/encode
data that was transmitted to/from the application and customers web browsers.
The WAF also enabled visibility to how the site was currently being
scraped/attacked and potential mitigation.&lt;/p&gt;
&lt;h1 id=&#34;technologies-used&#34;&gt;Technologies Used
&lt;/h1&gt;&lt;p&gt;The existing infrastructure automation was primarily in &lt;a class=&#34;link&#34; href=&#34;https://github.com/Azure/bicep&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bicep&lt;/a&gt; and
&lt;a class=&#34;link&#34; href=&#34;https://github.com/PowerShell/PowerShell&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Powershell&lt;/a&gt;. These technologies have not previously been used by BITServices
and therefore brought new knowledge to the company and contrast with the
alternative tools that we much more commonly use.&lt;/p&gt;
&lt;h1 id=&#34;other-deliverables&#34;&gt;Other Deliverables
&lt;/h1&gt;&lt;p&gt;As well as delivering &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/products/frontdoor/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Azure Front Door&lt;/a&gt;, other small tasks carried out
included creating another environment with infrastructure as code which
required heavy refactoring. The refactoring was mainly converting scripted
&lt;a class=&#34;link&#34; href=&#34;https://github.com/PowerShell/PowerShell&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PowerShell&lt;/a&gt; steps into proper infrastructure as code (&lt;a class=&#34;link&#34; href=&#34;https://github.com/Azure/bicep&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bicep&lt;/a&gt; in this case)
and fixing infrastructure deployment pipelines that were failing for various
reasons.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
</description>
        </item>
        <item>
        <title>Arden University</title>
        <link>https://www.bitservices.io/projects/arden/</link>
        <pubDate>Sat, 01 Jan 2022 00:00:00 +0000</pubDate>
        
        <guid>https://www.bitservices.io/projects/arden/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://arden.ac.uk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.bitservices.io/img/arden-university/logo.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Arden University&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For Arden, there were two projects to deliver: an Amazon Elastic Kubernetes
Service (&lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/eks/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EKS&lt;/a&gt;) based platform and development of their serverless integrations.&lt;/p&gt;
&lt;p&gt;In order to help with the delivery of these projects, some open source
contributions were made.&lt;/p&gt;
&lt;h1 id=&#34;elastic-kubernetes-service-eks-platform&#34;&gt;Elastic Kubernetes Service (&lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/eks/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EKS&lt;/a&gt;) Platform
&lt;/h1&gt;&lt;p&gt;A new platform was required to migrate existing on-premises and Amazon &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/ec2/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EC2&lt;/a&gt;
workloads to. The new platform had to allow developers to easily manage their
own deployments, allow for centralised logging and monitoring, had to be secure
and allow for management of things such as DNS records and TLS certificates to
be fully automated.&lt;/p&gt;
&lt;p&gt;The platform had to be delivered &amp;lsquo;as code&amp;rsquo; so it could be easily managed,
upgraded and replicated. This was done using mainly &lt;a class=&#34;link&#34; href=&#34;https://www.terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt; with some base
&lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; services being deployed using the &lt;a class=&#34;link&#34; href=&#34;https://www.terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://helm.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Helm&lt;/a&gt; provider.&lt;/p&gt;
&lt;p&gt;Any base &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; services that &lt;a class=&#34;link&#34; href=&#34;https://argoproj.github.io/cd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD&lt;/a&gt; did not depend on explicitly were
managed and deployed by &lt;a class=&#34;link&#34; href=&#34;https://argoproj.github.io/cd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD&lt;/a&gt; along with the business applications hosted on
the platform.&lt;/p&gt;
&lt;h2 id=&#34;managing-deployments-with-argocd&#34;&gt;Managing Deployments with ArgoCD
&lt;/h2&gt;&lt;p&gt;The main interface into the platform for developers was through &lt;a class=&#34;link&#34; href=&#34;https://argoproj.github.io/cd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD&lt;/a&gt;. This
allowed developers to deploy applications, see the status of their workloads and
get immediate logs and events to diagnose failures. Being able to deploy and
diagnose simple issues themselves allowed developers to spend less time being
blocked waiting for infrastructure engineers to help out.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://argoproj.github.io/cd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD&lt;/a&gt; was integrated with Microsoft &lt;a class=&#34;link&#34; href=&#34;https://www.microsoft.com/security/business/microsoft-entra&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Entra&lt;/a&gt; to allow single-sign on which
improves security and convenience. Developers could be assigned to individual
projects meaning they only have access to the applications that they are working
with.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://argocd-image-updater.readthedocs.io/en/stable/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD Image Updater&lt;/a&gt; was also used in development environments so that
successful builds of an application could be deployed automatically.&lt;/p&gt;
&lt;h2 id=&#34;monitoring--logging&#34;&gt;Monitoring &amp;amp; Logging
&lt;/h2&gt;&lt;p&gt;For the monitoring and logging, open source tools were used as they provide
excellent flexibility and of course value.&lt;/p&gt;
&lt;p&gt;For monitoring, &lt;a class=&#34;link&#34; href=&#34;https://prometheus.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prometheus&lt;/a&gt; was used with &lt;a class=&#34;link&#34; href=&#34;https://grafana.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Grafana&lt;/a&gt;. &lt;a class=&#34;link&#34; href=&#34;https://prometheus.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prometheus&lt;/a&gt; was also
configured to make a future expansion to &lt;a class=&#34;link&#34; href=&#34;https://thanos.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thanos&lt;/a&gt; as easy as possible, should
the need ever arise.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://grafana.com/oss/loki/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Loki&lt;/a&gt; was used for logging, it integrated perfectly with the monitoring metrics
since it also uses &lt;a class=&#34;link&#34; href=&#34;https://grafana.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Grafana&lt;/a&gt; as the main user interface.&lt;/p&gt;
&lt;p&gt;Alerts were configured with &lt;a class=&#34;link&#34; href=&#34;https://grafana.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Grafana&lt;/a&gt; unified alerts, allowing alerts to be
raised from either metric or logging data.&lt;/p&gt;
&lt;h2 id=&#34;automated-management&#34;&gt;Automated Management
&lt;/h2&gt;&lt;p&gt;Tools such as &lt;a class=&#34;link&#34; href=&#34;https://cert-manager.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Certificate Manager&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes-sigs/external-dns/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;External DNS&lt;/a&gt; were used to allow
automation of day to day administrative tasks.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://cert-manager.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Certificate Manager&lt;/a&gt; automatically provisions and renews TLS certificates for
applications hosted within the platform whilst &lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes-sigs/external-dns/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;External DNS&lt;/a&gt; creates and cleans
up DNS records.&lt;/p&gt;
&lt;h2 id=&#34;future-ready&#34;&gt;Future Ready
&lt;/h2&gt;&lt;p&gt;Whilst not immediately implemented due to possible conflicts with the business
the platform was developed and tested with IPv6 support and support for &lt;a class=&#34;link&#34; href=&#34;https://www.arm.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ARM&lt;/a&gt;
based compute allowing for easy adoption later on.&lt;/p&gt;
&lt;h1 id=&#34;serverless-integrations-development&#34;&gt;Serverless Integrations Development
&lt;/h1&gt;&lt;p&gt;Arden was implementing a new student record system called &lt;a class=&#34;link&#34; href=&#34;https://www.tribalgroup.com/solutions/student-information-systems/sits-vision&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SITS&lt;/a&gt;. This was a
huge project that affected all areas of the business. A significant problem was
integrating existing systems that do not understand &lt;a class=&#34;link&#34; href=&#34;https://www.tribalgroup.com/solutions/student-information-systems/sits-vision&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SITS&lt;/a&gt;, such as: the virtual
learning environment, Active Directory, time tabling products and many more.&lt;/p&gt;
&lt;p&gt;To enable this communication between systems, a group of serverless
&amp;lsquo;middlewares&amp;rsquo; were used to keep things scalable and event driven.&lt;/p&gt;
&lt;p&gt;Since the integrated systems spanned across &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AWS&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Azure&lt;/a&gt; as well as
including software as a service (SaaS) solutions, many technologies were used to
integrate them. These technologies included: &lt;a class=&#34;link&#34; href=&#34;https://www.typescriptlang.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Typescript&lt;/a&gt; based &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/lambda/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Lambda&lt;/a&gt;
functions deployed with the Amazon &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/cdk/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CDK&lt;/a&gt;, Azure &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/products/logic-apps&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Logic Apps&lt;/a&gt;, Azure &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/products/functions/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Functions&lt;/a&gt;,
Amazon &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/sns/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SNS&lt;/a&gt;, Amazon &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/sqs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SQS&lt;/a&gt; and Azure &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/products/service-bus/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Service Bus&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These integrations handled large amounts of traffic especially as &lt;a class=&#34;link&#34; href=&#34;https://www.tribalgroup.com/solutions/student-information-systems/sits-vision&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SITS&lt;/a&gt; went
live at Arden. They also helped the business implement complex processes with
systems that cannot be directly integrated.&lt;/p&gt;
&lt;h1 id=&#34;open-source-contributions&#34;&gt;Open Source Contributions
&lt;/h1&gt;&lt;p&gt;The following open source contributions were made whilst delivering these
projects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/prometheus/prometheus/pull/16088&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prometheus: discovery: Allow EC2 Service Discovery to work with IPv6-only instances&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes-sigs/external-dns/pull/5111&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;External DNS: feat(aws): always create AAAA alias records in route53&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/zorn96/ms_active_directory/pulls?q=is%3Apr&amp;#43;author%3Arlees85&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ms_active_directory: Multiple contributions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/navarasu/onedark.nvim/pull/234&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;onedark.nvim: Fix NvimTree Floating Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/kdheepak/lazygit.nvim/pull/148&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lazygit.nvim: feat: Allow current buffer commits to show on the already worked out Git root&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- raw HTML omitted --&gt;
</description>
        </item>
        <item>
        <title>Drivvn</title>
        <link>https://www.bitservices.io/projects/drivvn/</link>
        <pubDate>Thu, 02 Jul 2020 00:00:00 +0000</pubDate>
        
        <guid>https://www.bitservices.io/projects/drivvn/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.drivvn.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.bitservices.io/img/drivvn/logo.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Drivvn&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A project to pick up support for and improve an existing &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; based
infrastructure platform hosted on &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Microsoft Azure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#result&#34; &gt;Skip to Result&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&#34;stabilising-platform&#34;&gt;Stabilising Platform
&lt;/h1&gt;&lt;p&gt;Initially, the primary focus had been to automate continual time consuming
tasks and to reduce the number of support tickets. This has been achieved by
implementing technologies such as &lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes-sigs/external-dns/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;External DNS&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://cert-manager.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Certificate Manager&lt;/a&gt;.
Reliability has been improved by consolidating and improving complex build
pipelines by utilising YAML libraries for &lt;a class=&#34;link&#34; href=&#34;https://azure.microsoft.com/services/devops/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Azure DevOps&lt;/a&gt; and introducing
infrastructure as code with &lt;a class=&#34;link&#34; href=&#34;https://www.terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;evolving-platform&#34;&gt;Evolving Platform
&lt;/h1&gt;&lt;p&gt;After stabilising the platform focus shifted to evolving the platform to be
more performant, scalable and developer friendly. In addition to everything
outlined below, lots of work went into upgrades of &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; clusters and
services, improvements as and when they were identified and migrations to new
Azure subscriptions/tenants.&lt;/p&gt;
&lt;h2 id=&#34;developer-friendly&#34;&gt;Developer Friendly
&lt;/h2&gt;&lt;p&gt;To help improve continuous delivery, &lt;a class=&#34;link&#34; href=&#34;https://argoproj.github.io/cd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD&lt;/a&gt; was implemented. This allowed
developers to publish &lt;a class=&#34;link&#34; href=&#34;https://www.docker.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; images in their build pipelines which would then
automatically be picked up and deployed into a &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; environment.
&lt;a class=&#34;link&#34; href=&#34;https://argoproj.github.io/cd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD&lt;/a&gt; also allowed the configuration for the application to be completely
separated from other infrastructure as code meaning developers could have full
control over the configuration of their deployed applications without
requiring permissions to alter other parts of infrastructure.&lt;/p&gt;
&lt;h2 id=&#34;infrastructure-as-code&#34;&gt;Infrastructure as Code
&lt;/h2&gt;&lt;p&gt;There was a large focus on infrastructure as code. &lt;a class=&#34;link&#34; href=&#34;https://www.terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt; was used to
automate the creation of all base infrastructure: such as resource groups,
virtual networks, security groups and &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; clusters - including all
supporting infrastructure and Active Directory objects. This allowed much
quicker and reliable provision of core infrastructure.&lt;/p&gt;
&lt;p&gt;Any new services deployed were also fully automated so that required
databases, &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; permissions and the application themselves could also
be deployed in a reliable and repeatable way.&lt;/p&gt;
&lt;h2 id=&#34;monitoring--logging&#34;&gt;Monitoring &amp;amp; Logging
&lt;/h2&gt;&lt;p&gt;As the platform grew it became important to be able to monitor workloads.
Initially &lt;a class=&#34;link&#34; href=&#34;https://prometheus.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prometheus&lt;/a&gt; was used with &lt;a class=&#34;link&#34; href=&#34;https://grafana.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Grafana&lt;/a&gt; as well as some other custom
exporters to get certain metrics that were otherwise unavailable.&lt;/p&gt;
&lt;p&gt;However as things grew &lt;a class=&#34;link&#34; href=&#34;https://prometheus.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prometheus&lt;/a&gt; was not scaling so eventually the
monitoring stack was upgraded with &lt;a class=&#34;link&#34; href=&#34;https://thanos.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thanos&lt;/a&gt;. This allowed gathering of huge
amounts of metrics from multiple &lt;a class=&#34;link&#34; href=&#34;https://prometheus.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Prometheus&lt;/a&gt; instances and storing the data
in cost efficient blob storage. &lt;a class=&#34;link&#34; href=&#34;https://thanos.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Thanos&lt;/a&gt; also allowed a &amp;lsquo;single pane of glass&amp;rsquo;
view of the entire estate of multiple clusters through &lt;a class=&#34;link&#34; href=&#34;https://grafana.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Grafana&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Centralised logging was also set up utilising &lt;a class=&#34;link&#34; href=&#34;https://www.elastic.co/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ElasticSearch&lt;/a&gt; at first and
later &lt;a class=&#34;link&#34; href=&#34;https://newrelic.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;New Relic&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;ingress&#34;&gt;Ingress
&lt;/h2&gt;&lt;p&gt;A lot of work was carried out around ingress to the platform. Initially
cluster ingresses were standardised with &lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes/ingress-nginx/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ingress Nginx&lt;/a&gt;. Security and CDN
capability was then added using &lt;a class=&#34;link&#34; href=&#34;https://www.cloudflare.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://www.cloudflare.com/en-gb/products/zero-trust/access/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cloudflare Access&lt;/a&gt;. This
allowed many apps to use single sign-on that originally did not support it.
It also enabled zero trust access to internal services without having to set
up and maintain a VPN.&lt;/p&gt;
&lt;h1 id=&#34;result&#34;&gt;Result
&lt;/h1&gt;&lt;p&gt;Due to multiple reasons - the good work that Drivvn do, the pandemic and just
the way things are going - significantly more people are now buying cars
online. Making the infrastructure more scalable and resilient has helped make
it possible to meet these suddenly increasing demands.&lt;/p&gt;
&lt;p&gt;Having the infrastructure as code ready allowed us to work with one of the
Drivvn development teams to deliver a new product from inception to launch
within a few weeks. The initial infrastructure was provisioned and available
within hours. We then worked with the team to refine the build pipelines and
infrastructure as they developed the product. Since launch, the infrastructure
supporting this product has been extremely reliable. Having &lt;a class=&#34;link&#34; href=&#34;https://argoproj.github.io/cd/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ArgoCD&lt;/a&gt; set up
allowed developers to manage their own configuration and &amp;lsquo;self-serve&amp;rsquo;
deployments all the way to production - with easy roll backs if required.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
</description>
        </item>
        <item>
        <title>Eclipse Group Solutions</title>
        <link>https://www.bitservices.io/projects/eclipse-group-solutions/</link>
        <pubDate>Mon, 06 Nov 2017 00:00:00 +0000</pubDate>
        
        <guid>https://www.bitservices.io/projects/eclipse-group-solutions/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.linkedin.com/company/eclipse-group-solutions-ltd./&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://www.bitservices.io/img/eclipse-group-solutions/logo.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Eclipse Group Solutions&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A very exciting &amp;lsquo;greenfield&amp;rsquo; project creating a new infrastructure platform
using &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amazon Web Services&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://docker.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; for &lt;a class=&#34;link&#34; href=&#34;https://www.sap.com/uk/products/crm/e-commerce-platforms.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SAP Commerce&lt;/a&gt; based
e-commerce websites.&lt;/p&gt;
&lt;p&gt;It had been a great pleasure working with the team at &lt;a class=&#34;link&#34; href=&#34;https://www.linkedin.com/company/eclipse-group-solutions-ltd./&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Eclipse&lt;/a&gt; whilst
delivering this project.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;#result&#34; &gt;Skip to Result&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&#34;project-breifing&#34;&gt;Project Breifing
&lt;/h1&gt;&lt;p&gt;The project aim was to create an &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amazon Web Services&lt;/a&gt; based, fully automated
infrastructure platform to host &lt;a class=&#34;link&#34; href=&#34;https://www.sap.com/uk/products/crm/e-commerce-platforms.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SAP Commerce&lt;/a&gt; e-commerce websites. The
platform must be constructed in a way that it can be used on other cloud
service providers with little effort later on.&lt;/p&gt;
&lt;p&gt;Developers and testers needed the ability to get code and features through
testing pipelines much quicker. In addition, production websites need to handle
peak demand seamlessly.&lt;/p&gt;
&lt;p&gt;As well as delivering a platform, existing teams were to be assisted with
picking up new tools, technologies and concepts to enable on-going support
of the platform.&lt;/p&gt;
&lt;h1 id=&#34;solution&#34;&gt;Solution
&lt;/h1&gt;&lt;p&gt;The final solution comprised of many components. These components are outlined
below.&lt;/p&gt;
&lt;h2 id=&#34;infrastructure-as-code&#34;&gt;Infrastructure as Code
&lt;/h2&gt;&lt;p&gt;Writing infrastructure as code was key to this solution. This is what enabled
infrastructure to be provisioned in a reliable and repeatable way at the click
of a button. By taking advantage of &lt;a class=&#34;link&#34; href=&#34;https://terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt; module sources it was possible
to define a collection of infrastructure objects (such as subnets, route
tables, gateways) in a single place but allow variables (such as name, CIDR
ranges) to be passed in depending on the environment being built. As a result
all infrastructure met defined standards, human error is vastly reduced and
development/production parity was achieved.&lt;/p&gt;
&lt;p&gt;By taking advantage of &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amazon Web Services&lt;/a&gt; availability zones and
infrastructure as code, all production environments were highly available and
could withstand the loss of an Amazon data centre without any downtime.&lt;/p&gt;
&lt;h2 id=&#34;immutable-software&#34;&gt;Immutable Software
&lt;/h2&gt;&lt;p&gt;To allow software (&lt;a class=&#34;link&#34; href=&#34;https://www.sap.com/uk/products/crm/e-commerce-platforms.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SAP Commerce&lt;/a&gt; in particular) to run in a dynamically scaled
environment there were a few challenges to overcome. There needed to be a way
to start &lt;a class=&#34;link&#34; href=&#34;https://www.sap.com/uk/products/crm/e-commerce-platforms.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SAP Commerce&lt;/a&gt; very quickly in &amp;lsquo;scale-up&amp;rsquo; situations additionally the
state of any running &lt;a class=&#34;link&#34; href=&#34;https://www.sap.com/uk/products/crm/e-commerce-platforms.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SAP Commerce&lt;/a&gt; instances had to be externalised in case of
scale-down.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://docker.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; was chosen to containerise software. Containerisation enabled the
application and all dependencies, configurations, etc to be packed into an
image that can be started very quickly. By using &lt;a class=&#34;link&#34; href=&#34;https://www.sap.com/uk/products/crm/e-commerce-platforms.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SAP Commerce&lt;/a&gt; &amp;lsquo;aspects&amp;rsquo; a
single &lt;a class=&#34;link&#34; href=&#34;https://docker.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt; image can be capable of running in multiple environments in
multiple modes. A single image can be promoted all the way through the testing
pipeline just by using tags.&lt;/p&gt;
&lt;p&gt;To make running containers stateless, services such as Amazon &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/s3/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;S3&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/efs/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EFS&lt;/a&gt;
were used.&lt;/p&gt;
&lt;h2 id=&#34;service-orchestration&#34;&gt;Service Orchestration
&lt;/h2&gt;&lt;p&gt;To enable service-level auto scaling, auto healing, multi-tenant clustering and
service health checks, &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; was implemented. This allowed the platform
to meet the scaling requirements. The healing features of &lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt; allowed
the platform to be more resilient to virtual machine failure or network outages
resulting in a higher service availability.&lt;/p&gt;
&lt;h1 id=&#34;technologies--tools&#34;&gt;Technologies &amp;amp; Tools
&lt;/h1&gt;&lt;p&gt;Multiple technologies and tools were used to deliver this project.&lt;/p&gt;
&lt;h2 id=&#34;amazon-web-services&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amazon Web Services&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;The initial cloud provider chosen was Amazon. Amazon Web Services (AWS) is a
mature cloud service with endless offerings. It is effortless to build
highly-available and highly-performant infrastructure stacks. Most tools (such
as &lt;a class=&#34;link&#34; href=&#34;https://terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes/kops&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kops&lt;/a&gt; below) offer excellent support for AWS. By using the
many AWS services available such as &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/iam/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;IAM&lt;/a&gt; and availability zones it was
possible to create secure and resilient infrastructure.&lt;/p&gt;
&lt;h2 id=&#34;hashicorp-terraform&#34;&gt;Hashicorp &lt;a class=&#34;link&#34; href=&#34;https://terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Terraform was chosen to build foundation and networking infrastructure.
Terraform has excellent &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amazon Web Services&lt;/a&gt; support and code can easily be
ported to work with other cloud providers too - including OpenStack for
managing resources on-premises. Terraform made it very easy to meet the project
requirements to stay cloud agnostic and to fully automate infrastructure.&lt;/p&gt;
&lt;h2 id=&#34;docker&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://docker.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docker&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Containerisation was chosen to help simplify development. Rather than pushing a
codebase that may have a complete different set of steps to deploy depending on
target environment, containerisation makes that a single image that may take
the target environment as a parameter. Additionally, all dependencies and
libraries required to run the application are packed into the container,
meaning that the same container can be ran locally, on tin or in the cloud with
minimal effort. Docker was chosen specifically due to it being well proven and
mature.&lt;/p&gt;
&lt;h2 id=&#34;kubernetes&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://kubernetes.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kubernetes&lt;/a&gt;
&lt;/h2&gt;&lt;p&gt;Kubernetes is fast becoming an industry standard for container orchestration.
It can also run on any cloud provider or even on-premises on tin. Native
support for service-level auto-scaling and &amp;lsquo;cluster autoscaler&amp;rsquo; add-on for the
scaling of underlying virtual machines allowed scaling requirements to be met.
The many different types of services (deployments, statefulsets, daemonsets),
specifications (disruption budgets, affinities) and probes (liveness,
readiness) made it possible to build a platform that is resilient against
hypervisor, network or even data centre failures.&lt;/p&gt;
&lt;h2 id=&#34;other-tools&#34;&gt;Other Tools
&lt;/h2&gt;&lt;p&gt;Other tools used to deliver this project include: &lt;a class=&#34;link&#34; href=&#34;https://github.com/kubernetes/kops&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kops&lt;/a&gt;, Hasicorp &lt;a class=&#34;link&#34; href=&#34;https://www.packer.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Packer&lt;/a&gt;
and &lt;a class=&#34;link&#34; href=&#34;https://www.ansible.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ansible&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;result&#34;&gt;Result
&lt;/h1&gt;&lt;p&gt;The result of this project allows &lt;a class=&#34;link&#34; href=&#34;https://www.linkedin.com/company/eclipse-group-solutions-ltd./&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Eclipse&lt;/a&gt; to offer their customers an
improved hosting service. Development environments can now be provisioned
rapidly and easily decommissioned when not in use to match project demands.
Automatic scaling allows customers websites to seamlessly handle high load
during sales and events whilst running economically during quiet periods. The
platform allows for zero-downtime code deployments and platform updates. High
availability is achieved by always running across multiple availability zones
(data centres) in addition to having automatic health checks and repairs.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
</description>
        </item>
        <item>
        <title>FoodFriends</title>
        <link>https://www.bitservices.io/projects/foodfriends/</link>
        <pubDate>Fri, 01 Sep 2017 00:00:00 +0000</pubDate>
        
        <guid>https://www.bitservices.io/projects/foodfriends/</guid>
        <description>&lt;p&gt;&lt;img src=&#34;https://www.bitservices.io/img/foodfriends/logo.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;FoodFriends&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;A small project carried out for a family member.&lt;/p&gt;
&lt;h1 id=&#34;the-problem&#34;&gt;The Problem
&lt;/h1&gt;&lt;p&gt;FoodFriends have a small &lt;a class=&#34;link&#34; href=&#34;https://wordpress.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wordpress&lt;/a&gt; website that was hosted with a traditional
hosting provider. The provider, unfortunately had crippling limits such as only
50MiB of disk for website media. FoodFriends required that website stayed on
the &lt;a class=&#34;link&#34; href=&#34;https://wordpress.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Wordpress&lt;/a&gt; platform.&lt;/p&gt;
&lt;h1 id=&#34;the-solution&#34;&gt;The Solution
&lt;/h1&gt;&lt;p&gt;The website was moved to &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amazon Web Services&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To remove future support costs and time, the supporting infrastructure was
automated with Hashicorp &lt;a class=&#34;link&#34; href=&#34;https://terraform.io/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terraform&lt;/a&gt;. The installation and configuration of
software fully automated with &lt;a class=&#34;link&#34; href=&#34;https://www.ansible.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ansible&lt;/a&gt; - even down to the renewal of the TLS
certificate!&lt;/p&gt;
&lt;p&gt;By using Amazon &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/s3/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;S3&lt;/a&gt; backups are automatically taken and rotated daily.
Restoration of data is managed by the &lt;a class=&#34;link&#34; href=&#34;https://www.ansible.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ansible&lt;/a&gt; playbooks meaning the entire
infrastructure can be built from nothing with all data restored in just
minutes.&lt;/p&gt;
&lt;h1 id=&#34;the-result&#34;&gt;The Result
&lt;/h1&gt;&lt;p&gt;There is now gigabytes of available diskspace for media. As
&lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Amazon Web Services&lt;/a&gt; is an enterprise grade platform capable of hosting even
the most busiest of e-commerce websites the performance of the FoodFriends
website has increased dramatically.&lt;/p&gt;
&lt;p&gt;Having TLS configured correctly and being made mandatory the FoodFriends
website has had its ranking increased on &lt;a class=&#34;link&#34; href=&#34;https://www.google.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Google&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The current cost of hosting the infrastructure is approximately $1 a month for
a couple of &lt;a class=&#34;link&#34; href=&#34;https://aws.amazon.com/route53/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Route53&lt;/a&gt; zones. Once the free-tier expires, the overall cost will
still be &lt;strong&gt;only a third&lt;/strong&gt; of what it was with the previous host.&lt;/p&gt;
&lt;!-- raw HTML omitted --&gt;
</description>
        </item>
        
    </channel>
</rss>
