Micro Services Flashcards
White Box testing
White-box testing (also known as clear box testing, glass box testing, transparent box testing, and structural testing) is a method of software testing that tests internal structures or workings of an application, as opposed to its functionality (i.e. black-box testing)
CAP services
Primary means for modularization
Micro Services
Deployment Units
- need to scale things differently
- different runtimes, for example, Node.js vs Java
- loosely coupled, coarse-grained subsystems with separate lifecycles
False reasons are: distributed development, modularization, isolation, …
→ there are well established and proven better ways to address these things, without the pain which comes with microservices.
Conceptual Definition Language (CDL)
The Conceptual Definition Language (CDL) is a human-readable language for defining CDS models. Sources are commonly provided in files with.cds extensions and get compiled into CSN representations. Following sections provide a reference of all language constructs in CDL, which also serves as a reference of all corresponding CDS concepts and features.
Domain Modeling
Domain Models capture the static, data-related aspects of a problem domain in terms of entity-relationship models. They serve as the basis for persistence models deployed to databases as well as for service definitions.
OData
Open Data Protocol (OData) is an open protocol that allows the creation and consumption of queryable and interoperable Web service APIs in a standard way.
OData (Open Data Protocol) is a set of best practices for developing and using RESTful APIs. It helps you to focus on your Business Logic while creating RESTful APIs without the need to worry about various ways to define request and response Headers, HTTP Methods, Status Codes, Media Types, URL Conventions, Payload Formats, and more.
OData carries the following specifications:
It must follow REST principles unless there is a clear reason why it should not.
The OData services MUST have support for Atom encoding.
OData services SHOULD have support for JSON encoding.
REST is the most essential component technology of OData. OData 3.0 standards require OData users to follow REST principles. OData rests on HTML technology, which resolves the problem of being REST-based in a way. It supports two Protocols for Data Transfer, the XML-based Atom format and JSON.
OData also has guidance for performing actions like defining reusable procedures, tracking changes, and sending many REST requests.
https://hevodata.com/learn/odata-vs-rest/
Aspect-Oriented Programming
Aspect-Oriented Programming (AOP) is a programming paradigm designed to increase modularity by allowing the separation of cross-cutting concerns. Cross-cutting concerns are aspects of a program that affect multiple parts of the application, such as logging, security, or transaction management.
These concerns can lead to code duplication and tangled code if not handled properly.
CALESI effect
CAP-level Service Integrations” as well as for an initiative we started late 2023 by rolling out the CAP Plugins technique, which promotes plugins and add-ons contributions not only by the CAP team, but also by
SAP BTP technology units and service teams (beyond CAP team)
SAP application teams
Partners & Customers, as well as
Contributors from the CAP community
Moduliths
Moduliths have their own individually-defined responsibilities and interfaces, but they share a common codebase and are deployed as a unit. Think of these modules as building blocks within a larger structure, offering a balance between the rigidity of a traditional monolith and the distributed complexity of microservices.
CAP Low Level Processing Handling
Authentication and Authorization, incl. things like Certificates, mTLS, OAuth, …
Service Bindings like K8s secrets, VCAP_SERVICES, …
Multitenancy-related things, especially w.r.t. tenant isolation
Messaging protocols or brokers such as AMQP, MQTT, Webhooks, Kafka, Redis, …
Networking protocols such as HTTP, gRCP, OData, GraphQL, SOAP, RFC, …
Audit Logging → use the Calesi variant, which provides ultimate resilience
Logs, Traces, Metrics → CAP does that behind the scenes + provides Calesi variants
Transaction Management → CAP manages all transactions → don’t mess with that!
REST API
Understanding the Concept of REST APIs
REST (REpresentational State Transfer) refers to a Software Architectural Style that defines the standards for exchanging information between two different systems via the HTTP Protocol. It is the most popular architecture for exchanging data on the World Wide Web.
REST defines 6 different principles for Web Services:
Uniform Interface: All components in a REST system must adhere to the same interface and rules so as to communicate with each other.
Client-Server: REST separates Servers from Clients. The Servers store information, while the Clients retrieve information from the Servers.
Stateless: All requests made via REST are stateless. They have all the necessary information needed by the Server to execute the request.
Cacheable: In REST, both Clients and Servers can cache resources, which is good for reducing traffic and improving performance.
Layered System: REST supports a Layered System Architecture. The Client may communicate with one Server, while the other Servers perform tasks such as Data Storage and Authentication.
Code on Demand: REST requisitions may return executable code or logic when necessary (optional).
Any API (Application Programming Interface) that follows the above principles is referred to as a REST API. In most cases, REST APIs use XML or JSON, but the REST Architecture doesn’t require anything specific as far as this is concerned. REST does not require any particular format, but it accepts any format that can be used in Content Negotiation.
Layered System Architecture
layered software architecture remains an essential framework for developers. Serving as a logical structuring mechanism, it segments the software into manageable slices, each with a distinct role and responsibility. This hierarchical model promotes a well-organized and decoupled system, affording software engineers the flexibility to construct, maintain, and scale applications efficiently.