Agile development enables an organization to work iteratively and deliver incrementally. To help realize this goal, Quoin can recommend, adapt, and configure the tools and processes for Continuous Integration and Continuous Delivery (CI/CD). Although Quoin has experience in all aspects of development, we focus on build, test, and deployment functions since process improvements here yield the greatest impact on a development organization.
We use these tools for managing tasks, source code, build, testing, and deployment on all client and internal projects, and can use this experience to help your organization be more productive.
Quoin understands that organizations work differently and brings best practices from different methodologies support on-premises and cloud-based deployments.
Our approach includes tools, practices, and coaching to ensure successful deployment with an organization.
We trust in data, and can help your organization establish metrics for productivity and quality that will ensure an effective and sustainable model for agile development.
Shown here is the main build and deployment dashboard for UNICEF Primero, which has a full CI/CD environment used by our global development team.
We are enthusiastic practitioners of agile and lean practices on Quoin and client projects. We use this user-centric approach because of demonstrated results in improved productivity and quality over traditional methodologies. In helping clients adopt agile, our focus is on improving collaboration, communication, and accountability in software development. We understand that agile is not just user stories and stand ups – an effective process has to address management and implementation practices to achieve increased development and team productivity.
As part of our CI/CD process, Quoin uses tools like Ansible (www.ansible.com) and Docker (www.docker.com) to containerize and automate deployments. Containerization allows us to constantly push new code integrations into a production-like environment. This ensures that we are running and testing our code under conditions that mimic real usage as closely as possible. We have also found that this process produces exceptional code stability and application security. Because Docker is platform-agnostic, applications that are deployed via Docker may run on any flavor of Linux as well as Windows Server. If a project team decides to change an application’s setup in the future, such as infrastructure upgrades or deploying the tool in other contexts, Docker’s platform-neutrality will ease the transition and reduce deployment cost and time.
Quoin has designed, deployed, and maintained applications on a number of cloud hosting providers, including Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP). Cloud-based deployment carries a number of advantages over other approaches:
While the specification of the hardware, operating system, and other software for a production environment will depend on the use case for the application in question, we generally recommend the following measures for most applications:
Quoin is committed to security and privacy and approaches the configuration of applications and web-based systems with a security-first mindset. QUOIN’s comprehensive security strategy addresses hardware, network, operating system, and software
We use a wide range of tools for day-to-day implementation of work, including coding, debugging, source control, build, and continuous integration tools. We believe that many development organizations ignore the time and effort expended by poor SCM practices. We therefore focus on improving these fundamental processes. For example, a Quoin consultant can help an organization define an effective process for branching, reviewing, merging, and creating a new release. We have seen how improving these practices can save countless hours of engineering effort by reducing the 'waste' of failed releases.
Quoin views quality as intrinsic to the full development lifecycle and not a discrete function that can be accomplished after implementation. Thus, our teams apply practices throughout development that yield high quality software; for example, specifying user-acceptance criteria as part of a user story, or writing tests first before implementing any new object or module. Furthermore, we seek to leverage automated testing, including unit- and system-level regression testing. Our consultants can help a client embed these quality practices in requirements analysis, implementation, and testing phases of a project. The figure below shows the testing processes and primary role responsible for each in our comprehensive approach.
Our project teams work closely with client staff to build, release to pre-production environments for quality assurance, and release to production. Thus, we understand the process and tools for dev-ops and release management. Our focus here is on using automation for building, testing, and releasing software to improve reliability, eliminate human errors, and ultimately reduce the effort for this critical function.