Interesting technical articles
Our philosophy
Typically, we use one of the following software ‘stacks’:
- for server-side applications / core systems, and complex web projects, we use Java;
- for smaller, web-focused projects that require a fast turn-around, we use Python;
- for data analysis tasks, we use Python.
…although sometimes, where necessary, we simply choose the right technology for the job. We are pragmatic, rather than dogmatic, when it comes to technology choice.
In each case, we bring together best-of-breed software packages and projects from the open source world, and use them as a foundation for our solutions. This way, we spend less time ‘reinventing the wheel’ and more time focusing on you and your business.
Using open source software
As we focus on the specific problems facing your business, we typically base our solutions on a core selection of open source frameworks and supporting software:
Java | Python | Static websites |
---|---|---|
Deployment processes
To get projects deployed into production in an efficient yet controlled manner, we typically build deployment pipelines using GoCD and Ansible. This tends to give a good balance between simplicity and flexibility, and provides the bedrock of our ‘DevOps’ philosophy of releasing early and often.
Ansible playbooks provide the flexibility and power to automate deployment steps across all layers in the architecture, while GoCD pipelines orchestrate the process to ensure that builds are subject to testing and approvals as they progress from development through staging & test environments before they go live.
To complete the basic tool-chain, we integrate a source control repository, such as Subversion or Git, and an artifact repository such as Sonatype Nexus.
Target architectures
Generally, we would recommend deploying into a Unix environment, typically RHEL / CentOS, either in the cloud or on-premises through a hypervisor, typically ESXi.
Java service architectures are typically based around the Spring framework, running as a mesh of individual service instances, kept loosely coupled via messaging middleware or suitable web protocols.
Python-based web projects tend to be deployed onto Apache HTTP server in conjunction with mod_wsgi, using virtualenv to isolate dependencies on specific library versions.
In the data layer, we have direct experience integrating with a variety of 3rd-party databases and messaging solutions, including:
Messaging | Databases |
---|---|
|
Integrating into your environment
We are used to integrating quickly and effectively into larger development teams, and typically adopt agile practices in our development – namely “release early, release often” – and in our approach to testing.
Static websites
The recommended approach for promotion / marketing websites, is to use Hugo to generate your static pages backed by a Git repository, as this can be easily integrated with Forestry.io to provide an online content management system (CMS) suitable for use by editors and other content writers.
The resulting website can be deployed to cloud CDNs, such as netlify or AWS CloudFront, onto your existing web infrastructure, or onto our servers.