Skip to content

Instantly share code, notes, and snippets.

@AkashRajvanshi
Created March 18, 2020 06:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AkashRajvanshi/2124cbc14fec6957f27e403538ef5bf5 to your computer and use it in GitHub Desktop.
Save AkashRajvanshi/2124cbc14fec6957f27e403538ef5bf5 to your computer and use it in GitHub Desktop.

Phase 8 - Software Development with Linux

Software Engineering

Modern Software Development

Description: Candidates should be able to design software solutions suitable for modern runtime environments. Candidates should understand how services handle data persistence, sessions, status information, transactions, concurrency, security, performance, availability, scaling, load balancing, messaging, monitoring and APIs. Furthermore, candidates should understand the implications of agile and DevOps on software development.

Key Knowledge Areas:

Understand and design service based applications
Understand common API concepts and standards
Understand aspects of data storage, service status and session handling
Design software to be run in containers
Design software to be deployed to cloud services
Awareness of risks in the migration and integration of monolithic legacy software
Understand common application security risks and ways to mitigate them
Understand the concept of agile software development
Understand the concept of DevOps and its implications to software developers and operators

The following is a partial list of the used files, terms and utilities:

REST, JSON
Service Orientated Architectures (SOA)
Microservices
Immutable servers
Loose coupling
Cross site scripting, SQL injections, verbose error reports, API authentication, consistent enforcement of transport encryption
CORS headers and CSRF tokens
ACID properties and CAP theorem

Standard Components and Platforms for Software

Description: Candidates should understand services offered by common cloud platforms. They should be able to include these services in their application architectures and deployment toolchains and understand the required service configurations. OpenStack service components are used as a reference implementation.

Key Knowledge Areas:

Features and concepts of object storage
Features and concepts of relational and NoSQL databases
Features and concepts of message brokers and message queues
Features and concepts of big data services
Features and concepts of application runtimes / PaaS
Features and concepts of content delivery networks

The following is a partial list of the used files, terms and utilities:

OpenStack Swift
OpenStack Trove
OpenStack Zaqar
CloudFoundry
OpenShift

Source Code Management

Description: Candidates should be able to use Git to manage and share source code. This includes creating and contributing to a repository as well as the usage of tags, branches and remote repositories. Furthermore, the candidate should be able to merge files and resolve merging conflicts.

Key Knowledge Areas:

Understand Git concepts and repository structure
Manage files within a Git repository
Manage branches and tags
Work with remote repositories and branches as well as submodules
Merge files and branches
Awareness of SVN and CVS, including concepts of centralized and distributed SCM solutions

The following is a partial list of the used files, terms and utilities:

git
.gitignore

Continuous Integration and Continuous Delivery

Description: Candidates should understand the principles and components of a continuous integration and continuous delivery pipeline. Candidates should be able to implement a CI/CD pipeline using Jenkins, including triggering the CI/CD pipeline, running unit, integration and acceptance tests, packaging software and handling the deployment of tested software artifacts. This objective covers the feature set of Jenkins version 2.0 or later.

Key Knowledge Areas:

Understand the concepts of Continuous Integration and Continuous Delivery
Understand the components of a CI/CD pipeline, including builds, unit, integration and acceptance tests, artifact management, delivery and deployment
Understand deployment best practices
Understand the architecture and features of Jenkins, including Jenkins Plugins, Jenkins API, notifications and distributed builds
Define and run jobs in Jenkins, including parameter handling
Fingerprinting, artifacts and artifact repositories
Understand how Jenkins models continuous delivery pipelines and implement a declarative continuous delivery pipeline in Jenkins
Awareness of possible authentication and authorization models
Understanding of the Pipeline Plugin
Understand the features of important Jenkins modules such as Copy Artifact Plugin, Fingerprint Plugin, Docker Pipeline, Docker Build and Publish plugin, Git Plugin, Credentials Plugin
Awareness of Artifactory and Nexus

The following is a partial list of the used files, terms and utilities:

Step, Node, Stage
Jenkins SDL
Jenkinsfile
Declarative Pipeline
Blue-green and canary deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment