Software Architecture Flashcards
What is continuous Integration ?
WithCI Tools, developers build a large group of automated test cases that canquickly accept or reject code. This way, the battery of tests replaces manualQA and establishes a fast feedback loop that decreases the time it takes tomake changes to code.
What is Continuous Deployement ?
WithCD tools, instead of manually deploying code at the command line level, systemadministration is treated as code so that it can quickly and reliably delivernew software once it has been tested.
What is DevOps ?
It’s a methodology, or a set of practices, that brings Development and IT Operations team together. By combining their efforts and relying on automation for software delivery and infrastructure maintenance, organisations can release and update software faster than they ever did before. Its not just a technical shift. It’s a cultural shift. How things are done, who owns what changes it ?
What is Agile ?
Cycles ofwork. Sprints. Breakdown requirements in smaller requirements (backlog).
How SAML works ?
Security Assertion Markup Language.
Entities involved:
- Identity Provider (e.g. Microsoft)
- Service Provider (UltiPro)
User comes to UltiPro. Is redirected to MS. Usercredentials are entered and authenticated by MS. MS sends an encoded SAMLresponse to browser. This response is then sent to Service Provider. ServiceProvider validates the response and allows the entry.
Difference between MicroService vs SOAP
Microservice Architecture is highly opiniated version of SOAP where emphasis is put on deployement isolation. Isolation of data, backend logic and independence of these services is where Microservices differ from SOAP.
what is npm
npm is the world’s largest Software Registry.
The registry contains over 800,000 code packages.
Open-source developers use npm to share software
Many organizations also use npm to manage private development.
you use npm install to install the package
on ubuntu install npm by using
apt-get install npm
It uses file ~/.npmrc to locate private registeries if being used.
what is docker ?
docker is an open source software that allows people to easily create, deploy, and run applications by using containers (virtual-machine-as-code).
docker image: its a binary that allows docker to kick off a machine with all its pre-defined settings (docker run)
container: instance of an image. an image can be running in multiple instances creating copies of containers.
docker repository: its a repo where all images are stored and fetched from. docker hub is public repo.
dockerfile: its a text file that contains all instructions to pull a base image and execute set of instructions to create desired image and container at run time
mount volumes: instead of storing files on dockers, you can mount volumes on it and access files.
What is Software Architecture ?
From Book: Fundamentals of Software Architectures
Software architecture consists of the
- Structure of the system
- Architecture characteristics (“-ilities”) the system must support
- Architecture decisions
- And finally Design principles.
What is Structure of the Systeam in SA ?
Refers to the type of architecture style (or styles) the system is implemented in (such as microservices, layered, or microkernel).
e.g. Layered: Presentation Layer, Business Layer, Persistent Layer, Database Layer.
Monolithic UI + APIs + Microservices
Data Stores + Data Warehouse etc
What are Architecture Characteristics ?
The architecture characteristics define the success criteria of a system, which is generally orthogonal to the functionality of the system. Notice that all of the characteristics listed do not require knowledge of the functionality of the system, yet they are required in order for the system to function properly.
Examples: Reliability, Testability, Scalability, Security, Agility, Fault Tolerance, Elasticity, Recoverability, Performance, Deployability, Learnability.
What are Architecture Decisions ?
Architecture decisions define the rules for how a system should be constructed. For example, an architect might make an architecture decision that only the business and services layers within a layered architecture can access the database (see Figure 1-5), restricting the presentation layer from making direct database calls. Architecture decisions form the constraints of the system and direct the development teams on what is and what isn’t allowed.
What are Design Principals in Software Architecture ?
A design principle differs from an architecture decision in that a design principle is a guideline rather than a hard-and-fast rule. For example, the design principle illustrated in Figure 1-6 states that the development teams should leverage asynchronous messaging between services within a microservices architecture to increase performance. An architecture decision (rule) could never cover every condition and option for communication between services, so a design principle can be used to provide guidance for the preferred method (in this case, asynchronous messaging) to allow the developer to choose a more appropriate communication protocol (such as REST or gRPC) given a specific circumstance.