SDSDv1.3_14Dec2021_signed_ADDM_A.pdf
PDF 1 MB Posted
- Solicitation number
- FA702225R0007
About this file
The document is a Software Development Strategy Document (SDSD) Version 1.3 created by the Systems Development Digital Division of the Air Force Technical Applications Center (AFTAC) on 14 December 2021. The document provides comprehensive guidance for software development within AFTAC, outlining strategic principles, constraints, and best practices for software architecture, deployment, and management.
Key strategic elements include a preference for service-oriented and microservices architectures, containerization using Docker and Kubernetes, and a multi-layered architectural approach (Presentation, Business, Persistence, and Data layers). The strategy emphasizes using Oracle or MySQL databases, recommends programming languages like Java, Python, JavaScript, TypeScript, and Go, and mandates rigorous security scanning through tools like SonarQube and Fortify. The document also details infrastructure requirements across development, staging, and production environments, with a strong focus on continuous integration/continuous delivery (CI/CD) pipelines, automated testing, and adherence to Department of Defense security standards.
View the file
Other files
Show all 16
On GovTribe
Work with this file
- Download the original file
- Contacts named in this file
- Similar government files
- Ask GovTribe AI about this file
Text version
Systems Development Digital Division 14 December 2021
Software Development Strategy Document (SDSD)
Version 1.3
Prepared by
Systems Development Digital Division
Patrick Space Force Base, Florida 32925-3516
Distribution authorized to US Government agencies for administrative or operational use. Other requests for this document shall be referred to AFTAC/SDD, 1020 South Patrick Drive Building 10989, Patrick Space Force Base, Florida 32925-3516
JOSEPH A. WEHLEN III, GG-15, DAF
Chief, Digital Division, AFTAC/SDD
SDSD V1.3
REVISIONS
Version Date Author/Team Revision Description Authorized by
1.0 28 May 20 SDD Initial Lt Col Paz
1.1 29 Jun 20 SDD Changed ELK to EFK; Logstash to Fluentd
Joseph Wehlen
1.2 9 Nov 20 SDD Added versioning description Joseph Wehlen
1.3 14 Dec 21 SDD Included latest guidance on containers and FOSS
Joseph Wehlen
TABLE OF CONTENTS
1.0 Context
2.0 Functional Overview
3.0 AFTAC Information Technology Strategic Planning
3.1 Roles and Responsibilities
3.2 Information Technology Infrastructure Implementation
3.3 Software Planning
4.0 Principles
4.1 Services
4.2 Architectural Layering
4.3 Adopt, Buy, Create
5.0 Constraints
5.1 Containerization
5.2 Virtual Machines
5.3 Databases
5.4 Languages
5.5 Classification
5.6 Versioning
5.7 Security
5.8 Messaging Formats
6.0 Quality
6.1 Attributes
6.2 Monitoring
6.3 Code Quality Scans and Reporting
7.0 Infrastructure
7.1 Development/Staging/Production
7.2 Development Environment
7.3 Staging Environment
7.4 Production Environment
7.5 Virtual Machines
7.6 Databases
8.0 Data
8.1 AFTAC Data Governance Council
8.2 Storage Requirements
8.3 Data in Motion
9.0 Deployment
9.1 Deployment Strategy
9.2 Contingency Plans
9.3 Operations and Support
10.0 References
11.0 Acronyms
TABLE OF FIGURES
Figure 1 – Common Interface Concept Figure 2 – Architecture Layers and IT Strategies Figure 3 – Differences between Software Services Paths
Figure 4 – Structure of Vitual Machines and Containers Figure 5 – Example Versioning Scheme Figure 6 – Development/Staging/Production Environments Figure 7 – Continuous Integration Pipeline
1.0 CONTEXT
This software development strategy provides guidance on the architecture, design, development, and delivery of software for use in the Air Force Technical Applications Center (AFTAC). This strategy encompasses both software used for 24/7 operational missions, as well as Research and
Development (R&D) tools and applications. The intent of this document is not to provide an exact architecture or coding standards, but to provide strategic guidance on AFTAC software development efforts. The intended audience includes AFTAC’s internal workforce and external government and contractor teams performing software development for or on behalf of AFTAC.
Adherence to this strategy’s guidance will enable faster adoption of new technologies and provide new capabilities to the mission user through efficiencies gained by common architectures, software components, and coding conventions.
Recommendations on changes to this document should be submitted in writing to AFTAC/SDD.
2.0 FUNCTIONAL OVERVIEW
AFTAC’s legacy software architecture is built around a number of disparate systems lacking commonality of infrastructure. As a result, these systems became stovepipes without any communication between systems. To address these shortcomings, AFTAC is embarking upon a strategic plan to develop a core set of capabilities, such as logging, auditing, data access, messaging, etc. Once developed, this core functionality will be accessible to software focused on specific mission areas and techniques, such as Geophysical or Materials. The end-goal is to extrapolate as much as possible into the core capabilities to reduce the footprint of mission-specific software. Figure 1 illustrates this concept where custom-developed applications leverage common functionality and access disparate databases through a common interface.
Figure 1 – Common Interface Concept
3.0 AFTAC INFORMATION TECHNOLOGY STRATEGIC PLANNING
As the center is the leading federal organization for supplying technical information to the United
States government, it must maintain an integrated approach to leveraging its unique datasets and analysis tools to deliver timely information for expanding decision space to policy makers.
3.1 ROLES AND RESPONSIBILITIES
The success of any process to meet an organization’s vision and needs is dependent upon clear guidance and direction. To accomplish this, AFTAC will assign technical experts to specific roles with the responsibility for defining and guiding this process. These Information Technology (IT) domain leads below will serve as a collective for charting the center’s overall IT strategy in terms of the center's data, software, and IT hardware needs. The roles and responsibilities of these individuals will include, but not be limited to:
IT strategic planning IT investment planning IT transitioning to enable operations IT requirement forecasting
3.1.1 Chief Software Architect
The AFTAC Chief Software Architect (CSA) oversees and manages the software process and procedures and provides the strategic vision for AFTAC software. The CSA’s primary role is to provide hands-on software architecture leadership, guidance, and mentoring to all distributed software engineering teams, and to be a close collaborator and technical advisor to the Systems
Development Directorate (SD) to ensure the delivery of high-quality, robust, and scalable solutions. The CSA is responsible for ensuring AFTAC has a strategy for software architecture to manage current and future technologies. The CSA chairs the AFTAC Software Strategy Council.
3.1.2 Chief Technology Officer
The AFTAC Chief Technology Officer (CTO) oversees and manages the AFTAC computing infrastructure. The CTO’s primary role is to provide hands-on computing hardware architecture leadership, guidance, and mentoring to the engineering teams, and to be a close collaborator and technical advisor to the 709th Cyberspace Squadron (709 CYS) to ensure the delivery of high-quality, robust, and scalable solutions. The CTO is responsible for ensuring AFTAC has a strategy for the computing architecture to manage current and future technologies.
3.1.3 Center Data Officer
The AFTAC Center Data Officer (CDO) is responsible for providing enterprise-wide governance and utilization of information as an asset, via data processing, analysis, data mining, information trading, and other means. The CDO serves as the chairman for the AFTAC Data Governance
Council (DGC), which is composed of data stewards from across AFTAC’s mission areas.
3.2 INFORMATION TECHNOLOGY INFRASTRUCTURE IMPLEMENTATION
To support a truly center-wide IT process, the data, software and hardware strategies and visions must align. AFTAC is focusing on a layered architecture approach to software as the base for all these strategies. This approach provides a separation between differing components and organizes them in horizontal layers. This method of design is meant to be self-independent meaning that components are interconnected but do not depend on each other. While this approach can have n-tiers, AFTAC is focused on four primary layers. The Presentation, Business, Persistence, and Data layers.
The Presentation layer focuses on how data is presented to the users. This may be either with GUIs, file outputs, maps, or any other method users utilize to extract or interpret data.
The Business layer contains business or scientific logic. This layer is where the bulk of scientific processing lives and any other transformational or processing algorithms are placed.
The Persistence layer provides a layer of abstraction between the Data layer and the
Business logic layer. This layer is intended to allow the upper layers to query, access, and store data through common Application Programming Interfaces (APIs) without detailed knowledge of the storage mechanism or organization. This is where AFTAC will place a Data
Fabric to provide a single method for data access.
The Data layer is the lowest layer in this approach and is where all the data is stored.
In aligning the strategies with this architectural approach, each of the three strategies helps to define and plan for one or more layers.
The Software Strategy focuses primarily on the Presentation and Business layers, defining the technical decisions and architectures that go into those layers. The Software Strategy also helps to define and manage the Persistence layer by ensuring the API allows appropriate access and structure for the needs of the upper layers.
The Hardware Strategy is primarily responsible for defining the Data layer and what types of databases and technologies are preferred by the center for storing and backing up data.
Although a database is essentially software, AFTAC’s database administrators fall within
709 CYS and as a result database software is managed by the AFTAC Infrastructure Strategy
Council (AISC). The Hardware Strategy must also define and provide an infrastructure that can support all four layers of the architecture.
The Data Strategy is primarily focused on the Persistence and Data layers. For the Data layer, the Data Strategy is concerned with ensuring the data policies are met. For the
Persistence layer, the Data Strategy defines the minimum metadata requirements as well as the requirements for data access, discoverability, and use in multi-phenomenology analysis.
Figure 2 – Architecture Layers and IT Strategies
3.3 SOFTWARE PLANNING
All AFTAC software projects shall have planning sessions allowing for early and continuous discussions on architecture, security, requirements, and priorities. The following items should be discussed early at technical meetings to define runway and frameworks for software development.
Identification of requirements/use cases (stakeholders should include both end users as well as other AFTAC units requiring engagement).
Potential use of existing Commercial Off The Shelf (COTS), Government Off The Shelf
(GOTS), or Free and Open Source Software (FOSS).
Identification of the solution’s technologies (databases, programming languages, frameworks, etc.).
Data required for solution (including data flow diagrams detailing new data acquisition or modification of existing data/data flows).
Deployment strategy (delivery schedule, licensing costs, etc.).
4.0 PRINCIPLES
All software written specifically for AFTAC should follow the below principles.
4.1 SERVICES
4.1.1 All new software should utilize services, which may be Service Oriented
Architecture (SOA) based to support large system development, or the finer grained microservices to support smaller-scale web applications. Whichever services path taken, SOA or microservices, AFTAC is working towards an end-goal of sunsetting its legacy, monolithic systems in favor of services-based architecture. AFTAC plans to extrapolate as much as possible into core infrastructure provided capabilities to reduce the footprint of mission-specific software. Figure 3 illustrates the differences between these services-based architectures.
Figure 3 – Differences between Software Services Paths
4.1.2 Software services should adhere to industry best practices, such as statelessness, loose coupling achieved through dependency injection, and dependency inversion through the
Hollywood principle (“don’t call us, we’ll call you”).
4.1.3 Production microservice databases for a given project should be combined on a single Oracle database instance using separate table spaces or accounts, rather than creating a new
Oracle server for each microservice. This prevents sprawl of database instances and reduces maintenance costs.
4.2 ARCHITECTURAL LAYERING
4.2.1 All new software should implement a multi-tier/multi-layer architecture and must enforce the following architectural layers when required as shown in Figure 2: Presentation, Application/Business, Data/Persistence, and Database. Application layering facilitates maintenance by ensuring services can be tested independently, and changes to one layer have little or no impact on services in other layers.
4.2.1.1 Of course, not all applications will require every layer. For example, applications without a user interface do not require a Presentation layer, and simplistic applications may not require a database.
4.2.1.2 However, for applications that do require database access, this should be performed through a Data/Persistence layer to disconnect database access from application/business logic.
4.3 ADOPT, BUY, CREATE
4.3.1 Software development is an expensive endeavor, which does not simply end at product deployment but continues through sustainment and maintenance efforts while the software continues to be used operationally. Every effort, including a risk assessment, should be made to determine if a suitable off-the-shelf product, whether FOSS, COTS, or GOTS, is available before the decision is made to embark upon a software development project. AFTAC follows the same approach as the Air Force and Department of Defense (DoD) to software, preferentially adopting existing solutions before buying commercial offerings, and only creating new software when no off-the-shelf solutions are adequate.
4.3.2 Do not reinvent the wheel. If the decision has been made to develop custom software, take advantage of the trove of existing solutions (or partial solutions) that may already be available. Evaluate existing frameworks, libraries, and technologies for applicability to the problem at hand. The AFTAC Software Strategy Council can provide guidance on technologies that already exist within AFTAC’s technology ecosystem.
5.0 CONSTRAINTS
5.1 CONTAINERIZATION
AFTAC is shifting to a containerization strategy to facilitate software deployment across multiple environments (such as Development, Staging, and Production) and multiple networks, some of which may be geographically separated (such as the case between onsite production systems and hot-backup contingency systems). Therefore, all AFTAC software should be targeted to run as
Docker containers. Additionally, AFTAC utilizes Kubernetes as the preferred container orchestration tool. Exceptions should be presented to the AFTAC Software Strategy Council.
While any container can be hardened for use on production systems, AFTAC recommends using containers from DoD Centralized Artifact Repository (DCAR)/IronBank. AFTAC can immediately use secure, hardened containers from DCAR/IronBank as base containers. At a future date, AFTAC will require a “sidecar” security stack (such as what is provided using a Kubernetes container orchestration platform + Istio service mesh + appropriate logging) and is working with high-level approvals on detailed guidance for establishing sidecars in production containers.
5.2 VIRTUAL MACHINES
Although Docker containerization is preferred, there are some cases where it is not practical. In this case, AFTAC software should be targeted to run within a virtual machine. When utilizing virtual machines, Red Hat Enterprise Linux is the preferred operating system for AFTAC systems.
AFTAC recognizes there are special-case applications utilizing high-performance computing clusters that are recommended to run on bare metal instead of through virtualization. Exceptional use cases shall be presented to the AFTAC Software Strategy Council for review.
Figure 4 – Structure of Vitual Machines and Containers
5.3 DATABASES
The primary database management system used and maintained by AFTAC is the Oracle RDBMS.
Unfortunately, databases accessed externally by non-Air Force personnel do not fall within the Air
Force’s Oracle site-license. In these cases, the licensing costs inhibit the use of Oracle as a practical solution. In order to comply with existing Oracle licensing requirements, MySQL
Enterprise Edition is the preferred database for systems accessed by non-Air Force personnel as it includes features mandated by Defense Information Systems Agency (DISA) Security Technical
Implementation Guides (STIGs), such as data-at-rest encryption, auditing, etc. In an effort to limit personnel required for database administration, AFTAC is reluctant to increase the number of distinct database technologies. Therefore, specialized databases other than Oracle (for internal systems) or MySQL (for external systems) must be approved by both the AFTAC Software
Strategy Council and the AISC.
An alternative option for contractors may be to develop using an alternative database, such as
Postgres or MariaDB. If the solution is destined for the production system, sufficient time must be allocated during deployment to migrate to Oracle for production use.
5.3.1 AFTAC is currently exploring other, non-relational database types, such as
NoSQL, time-series, graph, etc. Use cases for non-relational databases should be presented to the
AFTAC Software Strategy Council.
5.4 LANGUAGES
As with limiting database technologies to facilitate maintenance, the number of software development languages should also be constrained. AFTAC’s legacy systems have been implemented using many software development languages over the course of several decades. In an effort to manage this and improve maintainability, AFTAC is recommending software development planned for production be limited to the following languages: Java, Python, JavaScript, TypeScript, and Go/Golang. Additional languages should be presented to the AFTAC
Software Strategy Council.
5.5 CLASSIFICATION
Although AFTAC systems may span multiple classification levels, every effort should be made to keep custom-developed software for AFTAC unclassified. Any classification considerations should be segregated from source code into either configuration parameters or isolated libraries/plug-ins. Although unclassified software will facilitate future maintenance, AFTAC recognizes that some software development must occur on classified systems and infrastructure exists on higher levels for full software versioning and Continuous Integration/Continuous
Delivery (CI/CD) pipelines.
5.6 VERSIONING
All software will utilize a semantic versioning scheme. This document recommends systems development utilize a services-based architecture, resulting in systems being composed of many components that can be deployed separately. Therefore, we provide for slightly different versioning schemes for components and the overarching systems. Figure 5 illustrates how a system is composed of varied component versions and increments a patch outside of a release based on internal component releases. AFTAC/SDD is responsible for the definition of system versus component in AFTAC software. New software versions shall include a version description explaining the version increment(s) and why the specific component or system number was incremented.
5.6.1 Systems
Systems will utilize a 4 (four) number semantic versioning scheme defined as Release.Major.
Minor.Patch as shown in Figure 5 below.
Figure 5 – Example Versioning Scheme
Release versions are incremented when enough components have changed as to require complete system tests to validate the system as defined by Subject Matter Experts (SMEs).
Additionally, because many projects are tied to contractual efforts, the release number may also change upon the first release after a new contract is assigned to develop or maintain the system.
Major versions will increment when significant architectural changes are made that may have potential increased risk or provide a change in security posture. Examples of these are changes in database or authentication technologies.
Minor versions will increment with the cadence typical of Agile software development deliveries, and represent incremental modification to the system.
Patch numbers will increment whenever a new component version is promoted outside of a formal release. These are typically hotfixes requiring an urgent or expedited release.
Note: All release and major system increments will include a document explaining the reason for the version increase, which will be included in Certificate To Field (CTF) artifacts.
5.6.2 Components
Components will utilize a 3 (three) number semantic versioning scheme defined as
Major.Minor.Patch. Each component (e.g., service, artifact, GUI) will have its own version number for separate security scanning and testing allowing them to be released outside of a complete system release. Some organizations choose to include a fourth number to represent the build version, such as Major.Minor.Patch.Build.
Major numbers will increment for any backward-incompatible change, significant architectural change, or change to the security technologies of the component.
Minor numbers increment with backward-compatible changes that also do not change the security posture of the component. Minor changes should be deployable without changes to any other components.
Patch numbers are incremented for backward-compatible changes to existing functionality and are typically reserved for bug fixes or maintenance releases.
5.7 SECURITY
5.7.1 All software destined for Production must pass DoD Assured Compliance
Assessment Solution (ACAS) scanning and DISA STIG inspection, to include containers and virtual machines hosting that software. Layered container images shall be initiated using DoD-approved hardened container base images, which have STIG rules pre-applied and are available on DoD repositories. The “Application Security and Development” STIG is applicable to
“browser-based applications comprised of numerous web technologies and architectures” and therefore pertinent to services-based software developed for AFTAC. Additionally, AFTAC-developed software, GOTS software, and FOSS must pass both SonarQube quality scans and
Micro Focus Fortify security scans of source code in the Development environment before moving to the Staging environment and then eventually to Production. All “Critical” and “High” Fortify vulnerabilities, and all “Blocker” and “Critical” SonarQube findings, should be addressed. Third-party software packages, frameworks, and libraries must come from reliable, trusted sources adhering to secure coding standards as determined by AFTAC’s Information Assurance (IA) and the Software Solution Management Team (SSMT) via software composition analysis scans.
Software security does not end with the resolution of “Critical” and “High” vulnerabilities, as continued software Operations and Maintenance (O&M) should strive to improve AFTAC’s security posture. Although “Medium” vulnerabilities represent a lower threat, reducing risk and securing software should be a continuing component of any R&D or O&M effort. “Medium” findings should be mitigated as much as possible or identified with a Plan of Action and Milestones
(POAM) to be addressed in a future release.
5.7.2 In addition to SonarQube and Fortify scans occurring within the Development environment, software containers and virtual machines will be scanned via DISA’s ACAS software within the Staging environment. AFTAC has obtained an Automatic Certificate To Field
(Auto-CTF) for software that successfully passes the SonarQube quality scan, the Fortify security scan, and the ACAS scan. This Auto-CTF will enable rapid deployment of software and reduce the time from Development to Production. The DoD Enterprise DevSecOps Reference Design is an excellent reference for integrating security into rapid development.
5.7.3 Software peer reviews are an industry best practice, and tools exist to enforce peer review prior to code commits into repositories (e.g., Gitlab merge requests). AFTAC-developed software, either written by AFTAC’s internal workforce or contracted out, must be peer reviewed prior to promotion to production systems. Peer reviews should not only focus on quality, such as adherence to coding standards and best practices, but also ensure code is secure. Peer reviews provide accountability and limit the risk of harmful software written by rogue personnel. As it is not practical to manually inspect delivered software, AFTAC assumes software developed externally through a contract or third-party organization has been peer reviewed throughout its course of development (language regarding this may be added to future contracts).
5.7.4 The following is an example path to Production:
[1] Software source code is scanned via code analyzers for quality and security in the
Development environment.
[2] Software source code is compiled and packaged into hardened container(s) and deployed into the Development environment.
[3] Software is run through automated tests.
[4] Software container(s) moved into the Staging environment.
[5] Software container(s) are security scanned via DISA ACAS in Staging environment.
[6] Software container(s) are moved into the Production environment.
5.8 MESSAGING FORMATS
AFTAC’s accredited cross-domain solutions pass information between networks and permit only pre-approved data types. Although the full list of pre-approved data types is CUI and therefore only available upon request, JavaScript Object Notation (JSON) is one of these pre-approved formats and it is the preferred method for messaging between networks. In instances where messages have been designed to be very large, and as a result performance necessitates a binary transmission, NetCDF3 format is available for transmission. It is important to consider that messages and data not pre-approved must be (1) serialized/deserialized into the JSON ASCII format, or (2) in the NetCDF3 binary format in order to enable transmission through cross-domain solutions. All data formats mapped to the common messaging formats must also go through a data validation check prior to conversion and movement through AFTAC guards. The AFTAC
Software Strategy Council will address any questions regarding messaging and data types approved for cross-domain transmission.
6.0 QUALITY
6.1 ATTRIBUTES
The following attributes should be taken into consideration when developing new software:
Performance (e.g., latency and throughput)
Scalability (e.g., data and traffic volumes)
Availability (e.g., uptime, downtime, scheduled maintenance, 24x7, 99.9%, etc.)
Security (e.g., authentication, authorization, data confidentiality, etc.)
Extensibility
Flexibility
Auditing
Monitoring and management
Reliability
Failover/disaster recovery (e.g., manual vs automatic, how long will this take?)
Interoperability
Accessibility
Usability
Adaptability (e.g. microservices may be used by multiple systems)
Abstractability (e.g. not vendor locked)
6.2 MONITORING
Software should be instrumented to allow for the monitoring of quality attributes. This monitoring allows AFTAC to ensure software is being used to the greatest impact of the mission. The following attributes are some of those that could potentially be monitored: Performance, Scalability, Availability, and Failover.
6.3 CODE QUALITY SCANS AND REPORTING
AFTAC utilizes the SonarQube source code analyzer and Fortify Static Code Analyzer to inspect developed software. The intent of Fortify and SonarQube scanning is to ensure quality software is promoted to production systems to enhance software robustness and maintainability. SonarQube provides a freely available Community Edition supporting all the recommended software development languages provided by this document. AFTAC also utilizes the Synopsys Black
Duck tool for validating open source tools.
6.3.1 At the very least, all “BLOCKER” and “CRITICAL” severity level findings by
SonarQube and Fortify should be addressed. Software containing numerous “MAJOR” severity level findings may be requested for rework by the AFTAC Software Strategy Council prior to promotion to production systems.
6.3.2 SonarQube will also be used to analyze source code unit test coverage, with 70% or higher as the goal based on industry studies. Each piece of business logic in the software should be covered by automated unit tests to reduce maintenance costs. Software containing insufficient test coverage will be requested for rework by the AFTAC Software Strategy Council prior to promotion to production systems.
7.0 INFRASTRUCTURE
7.1 DEVELOPMENT/STAGING/PRODUCTION
AFTAC provides separate Development, Staging, and Production environments at all 3 (three) classification levels. The Development environment is flexible enough to allow for rapid prototyping, analysis, and R&D. The Staging environment is an exact copy of Production where testing and security scans will be executed prior to promoting to operations. The Production system is the operational mission system. Figure 6 illustrates these environments.
Figure 6 – Development/Staging/Production Environments
7.2 DEVELOPMENT ENVIRONMENT
7.2.1 A CI/CD pipeline is available for personnel to leverage within AFTAC’s
Development environment. The Development environment is ever evolving and growing, and below is a current sampling of available technologies:
Integrated Development Environments (IDEs) and code editors, such as IntelliJ, Eclipse, NetBeans, Atom, PyCharm, and others
Compilers and debuggers via Redhat Developer Toolset (gcc, gdb, valgrind, etc.)
Source repository via Gitlab CE
CI/CD coordination via Gitlab Runner
Code quality scanning via SonarQube
Code security scanning via Fortify
Artifact repository via Artifactory Pro
Containerization via Docker and Kubernetes/Rancher
Common libraries and software packages applicable to AFTAC’s problem sets
A CI/CD pipeline is a series of steps that reduce the time to deploy software by forcing security considerations and automation into the process. The AFTAC pipeline follows the procedure portrayed in Figure 7.
Figure 7 – Continuous Integration Pipeline
7.2.2 Automated software unit and integration tests should be implemented in the CI/CD pipeline using built-in modules and third-party tools. The list of tools continues to evolve with the software. AFTAC currently recommends the following automated testing tools:
Junit – Java unit test
“unittest“ module – Python unit test
Jest/Enzyme – Javascript/Typescript unit test
“testing” module – Golang unit test
Wiremock/Mockito – Java service unit test
Testcontainers.java – containerized Java integration/db test support
Gherkin/Cucumber – integration test
Cypress – web UI integration test
Additional automated testing tools may be added to the centrally managed list via AFTAC
Software Strategy Council.
7.3 STAGING ENVIRONMENT
The Staging environment closely mirrors the Production environment. This environment provides a place for soak testing, end-to-end testing, validation testing, and failure testing by software developers and government SMEs. The Staging environment also provides a place for focused security testing by the Infrastructure as a Service (IaaS) group, who executes DISA’s ACAS software scans. AFTAC has obtained an Auto-CTF for software that successfully passes both the
SonarQube quality scan and the Fortify security scan with the Development environment, and then the ACAS scan within the Staging environment.
7.4 PRODUCTION ENVIRONMENT
Not all software developed by/for AFTAC will be planned for installation within the Production environment. AFTAC’s Production environment is a robust, mission-critical environment from which AFTAC’s 24/7 missions are executed. Additionally, the Production environment is duplicated at AFTAC’s geographically-separated hot-backup location for contingency plans. The following tech stack composes AFTAC’s preferred solution for production software:
OS – RedHat Enterprise Linux
Container – Docker CE
Orchestration – Kubernetes
Service Mesh – Istio
Authentication/SSO – Keycloak
Logging – EFK stack (Elasticsearch, Fluentd, Kibana)
Metrics/Alerting – Prometheus+Grafana, Kafka
Database – Oracle
Web Map Server – Geoserver
Refer to AFTAC Enterprise Infrastructure Baseline documentation for details about environment options.
7.5 VIRTUAL MACHINES
Although Docker containers are AFTAC’s preferred method for delivery and deployment of software, AFTAC recognizes there are cases for which containers are not optimal and, in these cases, software may be targeted for deployment on a RedHat Enterprise Linux virtual machine.
The underlying hypervisor infrastructure executing virtual machines is managed by 709 CYS and thereby falls outside the purview of this document.
7.6 DATABASES
If possible, a microservice database is preferable. This allows the best database to be utilized for each problem set, but data must be shared across services through APIs. Otherwise, Oracle is the preferred database with PostgreSQL as an option for smaller projects and MySQL as a fallback when access is required by non-Air Force personnel. To facilitate database maintenance, effort should be made to reduce or limit the database footprint by installing application metadata within existing databases rather than introducing a new database infrastructure.
8.0 DATA
8.1 AFTAC DATA GOVERNANCE COUNCIL
The AFTAC DGC tracks and catalogs data flowing into and out of AFTAC. Any new data acquisition or distribution systems should be coordinated with the council. Questions presented by the council may include:
Why do we need the data?
Where is the data coming from?
Who owns the data? Who is the data steward?
How is the data acquired?
What is the format of the data?
What are the archiving and back-up strategies?
Are there any regulatory requirements for the long-term archive of the data?
Is the data distributed outside of AFTAC?
Is the data required for production/operations?
Is data replication to AFTAC’s geographically-separated hot-backup contingency site required?
8.2 STORAGE REQUIREMENTS
Storage space should be considered for any new data acquisition. Potential storage requirements should be shared with 709 CYS early in the development lifecycle. Below are several questions that should be addressed regarding data storage:
What is the format for storage (databases, flat files, etc.)?
How much storage space is needed for data? (especially if you are dealing with “big data”).
How much storage space is needed for log files and auditing?
What is the projected 3-to-5-year growth horizon for storage needs?
What is the required data backup frequency?
Data at rest should follow the principles of the Zero Trust security framework, which requires all users to be authenticated, authorized, and continuously validated before being granted or keeping access to applications and data.
8.3 DATA IN MOTION
The AFTAC enterprise solution for managing data in motion is Apache NiFi. Any solutions requiring data movement, especially across classification domains, must be discussed at the
Technical Interchange Meetings.
9.0 DEPLOYMENT
9.1 DEPLOYMENT STRATEGY
Similar to data storage requirements, deployment requirements should be shared with AFTAC early in the development lifecycle. Consultation with AFTAC’s SSMT is highly encouraged in the development of deployment plans, and the AFTAC Software Strategy Council can be the intermediary to facilitate coordination with the appropriate personnel. The deployment strategy should be documented to answer the following questions:
Topology: How and where is the software installed and configured? How many containers? Virtual Machines?
What tools are recommended/required to execute the deployment procedure?
What are the requirements for memory, CPU, and networking configuration? Do certain containers/processes have unusually large resource demands?
What existing system(s) must the new software be integrated with?
What classification levels are required? Is data planned to move across networks?
9.2 CONTINGENCY PLANS
Deployment to the AFTAC production network must also take into account contingency planning in the event of failures and/or failover to AFTAC’s geographically-separated hot-backup location.
This poses additional questions to address:
Has a rollback strategy been defined?
What happens in the event of a software or infrastructure failure?
Is it clear how data is replicated across sites (e.g., data and analysis results replication to hot-backup contingency location)?
9.3 OPERATIONS AND SUPPORT
Software planned for the AFTAC production network must consider concerns for operations and support. Developers should be mindful of how the software will be used during 24/7 mission execution. For example, robustness should be built in to handle error conditions that may occur outside of normal business hours. Below are additional questions that need to be addressed regarding operating and supporting production software:
Who will monitor and manage software? Is additional effort required to allow AFTAC’s
Maintenance Operations Control Center to monitor status?
Where are logs and auditing stored? Are they accessible to 24/7 personnel for troubleshooting?
How are configuration changes deployed? Are outages required for configuration changes?
Has appropriate training been developed and provided? Troubleshooting instructions?
10.0 REFERENCES
AFI 17-130 (section 3.3.7) https://static.e-publishing.af.mil/production/1/saf_cn/publication/afi17-130/afi17-130.pdf
AFMAN 17-1203
https://static.e-publishing.af.mil/production/1/saf_cn/publication/afman17-1203/afman17-
1203.pdf
AFTAC Enterprise Infrastructure Baseline documentation
S:\709SPTG\709 CYS\Architecture Board\Hardware Baseline\Final
DevSecOps Initiative Documentation https://software.af.mil/dsop/documents
DISA Security Technical Implementation Guide (STIG) https://iase.disa.mil
DoD Enterprise DevSecOps Reference Design https://dodcio.defense.gov/Library/
IronBank - DoD Centralized Artifact Repository (DCAR) https://ironbank.dso.mil/
Software Factories https://software.af.mil/software-factories https://static.e-publishing.af.mil/production/1/saf_cn/publication/afi17-130/afi17-130.pdf https://static.e-publishing.af.mil/production/1/saf_cn/publication/afman17-1203/afman17-1203.pdf https://static.e-publishing.af.mil/production/1/saf_cn/publication/afman17-1203/afman17-1203.pdf https://software.af.mil/dsop/documents https://iase.disa.mil/ https://dodcio.defense.gov/Library/ https://ironbank.dso.mil/ https://software.af.mil/software-factories
11.0 ACRONYMS
ACAS ............................................................................. Assured Compliance Assessment Solution
AFTAC ............................................................................ Air Force Technical Applications Center
AISC ................................................................................. AFTAC Infrastructure Strategy Council
API ........................................................................................... Application Programming Interface
Auto-CTF ......................................................................................... Automatic Certificate To Field
CDO ................................................................................................................... Center Data Officer
CI/CD ......................................................................... Continuous Integration/Continuous Delivery
COTS ......................................................................................................Commercial Off The Shelf
CSA ........................................................................................................... Chief Software Architect
CTF .................................................................................................................... Certificate To Field
CTO.......................................................................................................... Chief Technology Officer
DCAR .................................................................................... DoD Centralized Artifact Repository
DGC ......................................................................................................... Data Governance Council
DISA .....................................................................................Defense Information Systems Agency
DoD .............................................................................................................. Department of Defense
FOSS .............................................................................................. Free and Open Source Software
GOTS ..................................................................................................... Government Off The Shelf
IA .................................................................................................................. Information Assurance
IaaS .......................................................................................................... Infrastructure as a Service
IDE ........................................................................................ Integrated Development Environment
IT ................................................................................................................ Information Technology
JSON ...................................................................................................... JavaScript Object Notation
O&M ....................................................................................................Operations and Maintenance
POAM ............................................................................................... Plan of Action and Milestones
R&D .......................................................................................................Research and Development
SD ............................................................................................... Systems Development Directorate
SME ............................................................................................................... Subject Matter Expert
SOA....................................................................................................Service Oriented Architecture
SSMT ....................................................................................Software Solution Management Team
STIG ............................................................................... Security Technical Implementation Guide
709 CYS ............................................................................................... 709th Cyberspace Squadron
This page was intentionally left blank.
| 2021-12-15T08:13:17-0500 | |
| WEHLEN.JOSEPH.A.III.1036750517 |
File details come from the government source that posted it. Updated .