docs: proofread and finalize blips for v8
This commit is contained in:
committed by
Stefan Rotsch
parent
60f12f9549
commit
0fedaab680
@@ -4,9 +4,6 @@ ring: assess
|
|||||||
quadrant: platforms-and-aoe-services
|
quadrant: platforms-and-aoe-services
|
||||||
---
|
---
|
||||||
|
|
||||||
Puppet
|
|
||||||
------
|
|
||||||
|
|
||||||
Puppet is an Open Source configuration management tool. It is used by a wide range of different companies world-wide, e.g. the Wikimedia Foundation, Mozilla, Reddit, CERN, Dell, Rackspace, Twitter, the New York Stock Exchange, PayPal, Disney, Citrix Systems, Spotify, Oracle, the University of California Los Angeles, the University of North Texas, QVC, Intel, Google and others.
|
Puppet is an Open Source configuration management tool. It is used by a wide range of different companies world-wide, e.g. the Wikimedia Foundation, Mozilla, Reddit, CERN, Dell, Rackspace, Twitter, the New York Stock Exchange, PayPal, Disney, Citrix Systems, Spotify, Oracle, the University of California Los Angeles, the University of North Texas, QVC, Intel, Google and others.
|
||||||
|
|
||||||
Puppet has been the basic tool to address Continuous Configuration Automation (CCA) in AOE's [Infrastructure as Code](/platforms-and-aoe-services/infrastructure-as-code/) strategy (IaC) for more than 4 years.
|
Puppet has been the basic tool to address Continuous Configuration Automation (CCA) in AOE's [Infrastructure as Code](/platforms-and-aoe-services/infrastructure-as-code/) strategy (IaC) for more than 4 years.
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
title: "Puppet"
|
|
||||||
ring: trial
|
|
||||||
quadrant: platforms-and-aoe-services
|
|
||||||
featured: false
|
|
||||||
---
|
|
||||||
@@ -9,11 +9,11 @@ STRIDE is a model of threat groups that helps to identify security threats to an
|
|||||||
|
|
||||||
The acronym stands for:
|
The acronym stands for:
|
||||||
|
|
||||||
* Spoofing
|
* **S**poofing
|
||||||
* Tampering
|
* **T**ampering
|
||||||
* Repudiation
|
* **R**epudiation
|
||||||
* Information disclosure
|
* **I**nformation disclosure
|
||||||
* Denial of service
|
* **D**enial of service
|
||||||
* Elevation of privilege
|
* **E**levation of privilege
|
||||||
|
|
||||||
AOE is applying the threat model in collaborative sessions using the [Elevation of Privilege Card Game](https://social.technet.microsoft.com/wiki/contents/articles/285.elevation-of-privilege-the-game.aspx) which helps to spark imagination and makes threats more tangible.
|
AOE is applying the threat model in collaborative sessions using the [Elevation of Privilege Card Game](https://social.technet.microsoft.com/wiki/contents/articles/285.elevation-of-privilege-the-game.aspx) which helps to spark imagination and makes threats more tangible.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title: "OCI Container"
|
title: "OCI Container"
|
||||||
ring: adopt
|
ring: adopt
|
||||||
quadrant: platforms-and-aoe-services
|
quadrant: platforms-and-aoe-services
|
||||||
tags: [devops]
|
tags: [devops]
|
||||||
---
|
---
|
||||||
|
|
||||||
OCI-compatible containers are currently the most-used solution for creating and managing container-based infrastructures and deployments.
|
OCI-compatible containers are currently the most-used solution for creating and managing container-based infrastructures and deployments.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: "Harbor"
|
title: "Harbor"
|
||||||
ring: trial
|
ring: assess
|
||||||
quadrant: platforms-and-aoe-services
|
quadrant: platforms-and-aoe-services
|
||||||
tags: [devops]
|
tags: [devops]
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -9,27 +9,27 @@ The [12-factor app](https://12factor.net/de/) methodology, originally developed
|
|||||||
|
|
||||||
### Core Principles of 12-Factor Apps
|
### Core Principles of 12-Factor Apps
|
||||||
|
|
||||||
1) **Codebase**: Maintain a single codebase tracked in version control, with multiple deployments.
|
1. **Codebase**: Maintain a single codebase tracked in version control, with multiple deployments.
|
||||||
2) **Dependencies**: Explicitly declare and isolate dependencies.
|
2. **Dependencies**: Explicitly declare and isolate dependencies.
|
||||||
3) **Config**: Store configuration in the environment.
|
3. **Config**: Store configuration in the environment.
|
||||||
4) **Backing Services**: Treat backing services as attached resources.
|
4. **Backing Services**: Treat backing services as attached resources.
|
||||||
5) **Build, Release, Run**: Strictly separate build and run stages.
|
5. **Build, Release, Run**: Strictly separate build and run stages.
|
||||||
6) **Processes**: Execute the app as one or more stateless processes.
|
6. **Processes**: Execute the app as one or more stateless processes.
|
||||||
7) **Port Binding**: Export services via port binding.
|
7. **Port Binding**: Export services via port binding.
|
||||||
8) **Concurrency**: Scale out via the process model.
|
8. **Concurrency**: Scale out via the process model.
|
||||||
9) **Disposability**: Maximize robustness with fast startup and graceful shutdown.
|
9. **Disposability**: Maximize robustness with fast startup and graceful shutdown.
|
||||||
10) **Dev/Prod Parity**: Keep development, staging, and production as similar as possible.
|
10. **Dev/Prod Parity**: Keep development, staging, and production as similar as possible.
|
||||||
11) **Logs**: Treat logs as event streams.
|
11. **Logs**: Treat logs as event streams.
|
||||||
12) **Admin Processes**: Run admin/management tasks as one-off processes.
|
12. **Admin Processes**: Run admin/management tasks as one-off processes.
|
||||||
|
|
||||||
### Extending to 15 Factors
|
### Extending to 15 Factors
|
||||||
|
|
||||||
The 15-factor model builds upon the original principles by adding:
|
The 15-factor model builds upon the original principles by adding:
|
||||||
|
|
||||||
13) **API First**: Design APIs first to ensure interoperability and future-proofing.
|
13. **API First**: Design APIs first to ensure interoperability and future-proofing.
|
||||||
14) **Telemetry**: Implement robust telemetry for monitoring and diagnostics.
|
14. **Telemetry**: Implement robust telemetry for monitoring and diagnostics.
|
||||||
15) **Authentication and Authorization**: Incorporate strong, centralized authentication and authorization mechanisms.
|
15. **Authentication and Authorization**: Incorporate strong, centralized authentication and authorization mechanisms.
|
||||||
|
|
||||||
### Relevance
|
### Relevance
|
||||||
|
|
||||||
For us this rather old pattern is still very relevant and many methods, patterns and practices on our radar are related and enable these pattern in their core. To name a few [Kubernetes](/platforms-and-aoe-services/kubernetes/), [Prometheus](/platforms-and-aoe-services/prometheus/), [Self-Service Infrastructure](/platforms-and-aoe-services/self-service-infrastructure/) or the [API-First Design Approach](/methods-and-patterns/api-first-design-approach/) are very related, others like [Shared Responsibility Models](/methods-and-patterns/shared-responsibility/) are easier to implement based on this pattern.
|
For us, this rather old pattern is still very relevant, and many methods, patterns, and practices on our radar are related and enable these patterns at their core. To name a few, [Kubernetes](/platforms-and-aoe-services/kubernetes/), [Prometheus](/platforms-and-aoe-services/prometheus/), [Self-Service Infrastructure](/platforms-and-aoe-services/self-service-infrastructure/), or the [API-First Design Approach](/methods-and-patterns/api-first-design-approach/) are very related. Others, like [Shared Responsibility Models](/methods-and-patterns/shared-responsibility/), are easier to implement based on this pattern.
|
||||||
|
|||||||
@@ -5,13 +5,11 @@ quadrant: tools
|
|||||||
tags: [devops]
|
tags: [devops]
|
||||||
---
|
---
|
||||||
|
|
||||||
[Apache APISIX](https://apisix.apache.org/) is an open-source, high-performance API gateway, designed for
|
[Apache APISIX](https://apisix.apache.org/) is an open-source, high-performance API gateway designed for microservices, cloud-native, and container-based architecture. It provides a wide range of features to manage and secure API services:
|
||||||
microservices, cloud-native and container-based architecture. It provides a wide range of features to manage
|
|
||||||
and secure API services:
|
|
||||||
|
|
||||||
- Scalability: Load balancing and routing, dynamic scaling
|
- **Scalability**: Load balancing and routing, dynamic scaling
|
||||||
- Performance: Fast and reliable, supports caching and rate limiting
|
- **Performance**: Fast and reliable, supports caching and rate limiting
|
||||||
- Multi-Protocol Support: Supports HTTP, HTTPS, WebSockets and gRPC
|
- **Multi-Protocol Support**: Supports HTTP, HTTPS, WebSockets, and gRPC
|
||||||
- Customization: Plugins for authentication, authorization and traffic management
|
- **Customization**: Plugins for authentication, authorization, and traffic management
|
||||||
|
|
||||||
APISIX is currently in trial at AOE and is being used in multiple projects.
|
APISIX is currently in trial at AOE and is being used in multiple projects.
|
||||||
|
|||||||
@@ -4,3 +4,5 @@ ring: adopt
|
|||||||
quadrant: tools
|
quadrant: tools
|
||||||
tags: [ci/cd]
|
tags: [ci/cd]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Argo CD has proven its effectiveness in various projects by successfully simplifying and automating Kubernetes application deployments.
|
||||||
|
|||||||
@@ -16,9 +16,6 @@ The use of [GitHub Copilot](/tools/github-copilot/) is currently project-based a
|
|||||||
### Potential Risks and Mitigation Strategies
|
### Potential Risks and Mitigation Strategies
|
||||||
|
|
||||||
- **Code Quality and Reliability**: Validate and review generated code before integration into the project. Manual code reviews and testing should remain fundamental to the development process.
|
- **Code Quality and Reliability**: Validate and review generated code before integration into the project. Manual code reviews and testing should remain fundamental to the development process.
|
||||||
|
|
||||||
- **Security Vulnerabilities**: Conduct thorough security assessments and penetration testing to identify and rectify potential weaknesses. Stay updated with security best practices and ensure AI-generated code aligns with secure coding guidelines.
|
- **Security Vulnerabilities**: Conduct thorough security assessments and penetration testing to identify and rectify potential weaknesses. Stay updated with security best practices and ensure AI-generated code aligns with secure coding guidelines.
|
||||||
|
|
||||||
- **Intellectual Property Concerns**: Scrutinize licensing and usage terms of AI tools. Exercise caution when incorporating code snippets from external sources and ensure compliance with relevant licenses.
|
- **Intellectual Property Concerns**: Scrutinize licensing and usage terms of AI tools. Exercise caution when incorporating code snippets from external sources and ensure compliance with relevant licenses.
|
||||||
|
|
||||||
- **Data Privacy**: Review data access and privacy policies of AI tools meticulously. Prevent inadvertent exposure or sharing of sensitive or confidential information with third parties.
|
- **Data Privacy**: Review data access and privacy policies of AI tools meticulously. Prevent inadvertent exposure or sharing of sensitive or confidential information with third parties.
|
||||||
|
|||||||
@@ -10,9 +10,6 @@ tags: [academy training, frontend, quality assurance]
|
|||||||
### Key Updates and Enhancements of the Past Years
|
### Key Updates and Enhancements of the Past Years
|
||||||
|
|
||||||
- **Broader Browser Support**: Cypress now supports a wider range of browsers, including Edge and WebKit, in addition to Chrome, Firefox, and Electron. This expansion ensures comprehensive testing across more environments.
|
- **Broader Browser Support**: Cypress now supports a wider range of browsers, including Edge and WebKit, in addition to Chrome, Firefox, and Electron. This expansion ensures comprehensive testing across more environments.
|
||||||
|
|
||||||
- **Improved Performance**: The latest versions of Cypress have focused on enhancing test execution speed. Optimizations in the core engine and better resource management have resulted in faster and more reliable test runs, even for large and complex test suites.
|
- **Improved Performance**: The latest versions of Cypress have focused on enhancing test execution speed. Optimizations in the core engine and better resource management have resulted in faster and more reliable test runs, even for large and complex test suites.
|
||||||
|
|
||||||
- **Enhanced Debugging Capabilities**: Debugging has become even more user-friendly with improved tooling. Features like time travel, where developers can step through each test command, and better error messages help in quickly identifying and resolving issues.
|
- **Enhanced Debugging Capabilities**: Debugging has become even more user-friendly with improved tooling. Features like time travel, where developers can step through each test command, and better error messages help in quickly identifying and resolving issues.
|
||||||
|
|
||||||
- **CI/CD Integration**: Cypress has strengthened its integration with popular CI/CD tools. Improved plugins and configurations for platforms like GitHub Actions, GitLab CI, CircleCI, and Jenkins make it easier to incorporate Cypress tests into continuous integration and continuous deployment pipelines.
|
- **CI/CD Integration**: Cypress has strengthened its integration with popular CI/CD tools. Improved plugins and configurations for platforms like GitHub Actions, GitLab CI, CircleCI, and Jenkins make it easier to incorporate Cypress tests into continuous integration and continuous deployment pipelines.
|
||||||
|
|||||||
@@ -9,7 +9,5 @@ featured: false
|
|||||||
In recent years, messaging systems have become more robust, scalable, and easier to integrate with existing applications. This has increased the importance of messaging in modern software architectures, making it an essential strategy for decoupling components and ensuring the resilience and stability of distributed systems:
|
In recent years, messaging systems have become more robust, scalable, and easier to integrate with existing applications. This has increased the importance of messaging in modern software architectures, making it an essential strategy for decoupling components and ensuring the resilience and stability of distributed systems:
|
||||||
|
|
||||||
- **Event Streaming**: Platforms such as [Apache Kafka](/tools/kafka/) have evolved significantly to handle massive data streams with enhanced reliability and integration capabilities.
|
- **Event Streaming**: Platforms such as [Apache Kafka](/tools/kafka/) have evolved significantly to handle massive data streams with enhanced reliability and integration capabilities.
|
||||||
|
|
||||||
- **Serverless Messaging**: The rise of [serverless computing](/methods-and-patterns/serverless/) has simplified the creation of scalable, event-driven architectures, allowing developers to build complex workflows and event-processing pipelines without the overhead of managing infrastructure.
|
- **Serverless Messaging**: The rise of [serverless computing](/methods-and-patterns/serverless/) has simplified the creation of scalable, event-driven architectures, allowing developers to build complex workflows and event-processing pipelines without the overhead of managing infrastructure.
|
||||||
|
|
||||||
- **Advanced Observability**: Improved tools for monitoring and managing messaging systems now offer detailed insights into message flows and system performance, enabling faster diagnosis and resolution of issues.
|
- **Advanced Observability**: Improved tools for monitoring and managing messaging systems now offer detailed insights into message flows and system performance, enabling faster diagnosis and resolution of issues.
|
||||||
|
|||||||
@@ -5,12 +5,10 @@ ring: assess
|
|||||||
tags: [coding, devops]
|
tags: [coding, devops]
|
||||||
---
|
---
|
||||||
|
|
||||||
[DevSpace](https://www.devspace.sh/) is an open-source developer tool for Kubernetes that lets you develop and
|
[DevSpace](https://www.devspace.sh/) is an open-source developer tool for Kubernetes that lets you develop and deploy cloud-native software faster. As a "client-only" development tool, it is very simple to develop Kubernetes-native applications in local or any remote cluster.
|
||||||
deploy cloud-native software faster. As a "client-only" development tool, it is very simple to develop kubernetes
|
|
||||||
native applications in local or any remote cluster.
|
|
||||||
|
|
||||||
- **Build**, test and debug applications directly inside Kubernetes
|
- **Build**, test, and debug applications directly inside Kubernetes.
|
||||||
- **Develop** with hot reloading: updates your running containers without rebuilding images or restarting containers
|
- **Develop** with hot reloading: updates your running containers without rebuilding images or restarting containers.
|
||||||
- **Unify** deployment workflows within your team and across dev, staging and production
|
- **Unify** deployment workflows within your team and across dev, staging, and production.
|
||||||
- **Automate** repetitive tasks for image building and deployment
|
- **Automate** repetitive tasks for image building and deployment.
|
||||||
- **Hot-Reloading** allows to recompile and restart Pods in local or remote clusters
|
- **Hot-Reloading** allows to recompile and restart Pods in local or remote clusters.
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ tags: [devops]
|
|||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|
||||||
While we continue to recommend the ELK Stack for specific use cases, we now prefer [Loki](/platforms-and-aoe-services/loki/) for most [Kubernetes](/platforms-and-aoe-services/kubernetes/)-based setups due to its seamless integration, cost efficiency and user-friendly query language.
|
While we continue to recommend the ELK Stack for specific use cases, we now prefer [Loki](/platforms-and-aoe-services/loki/) for most [Kubernetes](/platforms-and-aoe-services/kubernetes/)-based setups due to its seamless integration, cost efficiency, and user-friendly query language.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "GitHub Copilot"
|
title: "GitHub Copilot"
|
||||||
ring: adopt
|
ring: adopt
|
||||||
quadrant: "tools"
|
quadrant: tools
|
||||||
tags: [ai, architecture, coding]
|
tags: [ai, architecture, coding]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ quadrant: tools
|
|||||||
tags: [devops]
|
tags: [devops]
|
||||||
---
|
---
|
||||||
|
|
||||||
[k3d](https://k3d.io/) is a lightweight wrapper to run [k3s](https://k3s.io) (Rancher Lab’s minimal Kubernetes distribution) in docker. It is a very useful tool to create kubernetes native development environments or use it as sandbox to test out things locally.
|
[k3d](https://k3d.io/) is a lightweight wrapper to run [k3s](https://k3s.io) (Rancher Lab’s minimal Kubernetes distribution) in Docker. It is a very useful tool to create Kubernetes-native development environments or use it as a sandbox to test out things locally.
|
||||||
|
|||||||
@@ -10,15 +10,10 @@ tags: [ai]
|
|||||||
## Key Features
|
## Key Features
|
||||||
|
|
||||||
- **Integration with Multiple NLP Models**: LangChain supports the integration of various NLP models, allowing developers to choose the best-suited models for their specific use cases.
|
- **Integration with Multiple NLP Models**: LangChain supports the integration of various NLP models, allowing developers to choose the best-suited models for their specific use cases.
|
||||||
|
|
||||||
- **Support for Vector Databases**: The framework can seamlessly connect with different vector databases, which are crucial for implementing RAG patterns and enhancing the retrieval process in NLP applications.
|
- **Support for Vector Databases**: The framework can seamlessly connect with different vector databases, which are crucial for implementing RAG patterns and enhancing the retrieval process in NLP applications.
|
||||||
|
|
||||||
- **Preconfigured Chains**: LangChain provides pre-built chains for typical NLP tasks, such as question-answering and chatbots, reducing the time and effort required to build these functionalities from scratch.
|
- **Preconfigured Chains**: LangChain provides pre-built chains for typical NLP tasks, such as question-answering and chatbots, reducing the time and effort required to build these functionalities from scratch.
|
||||||
|
|
||||||
- **Compatibility with Open-Source Libraries**: LangChain is designed to work well with established open-source libraries, making it easier for developers to incorporate it into their existing workflows and leverage a wide range of tools and resources.
|
- **Compatibility with Open-Source Libraries**: LangChain is designed to work well with established open-source libraries, making it easier for developers to incorporate it into their existing workflows and leverage a wide range of tools and resources.
|
||||||
|
|
||||||
- **Ease of Deployment**: The framework simplifies the deployment process of NLP applications, ensuring that they can be quickly and efficiently moved from development to production.
|
- **Ease of Deployment**: The framework simplifies the deployment process of NLP applications, ensuring that they can be quickly and efficiently moved from development to production.
|
||||||
|
|
||||||
- **Versatile Use Cases**: LangChain is suitable for a variety of NLP applications, making it a versatile tool for developers working in different domains.
|
- **Versatile Use Cases**: LangChain is suitable for a variety of NLP applications, making it a versatile tool for developers working in different domains.
|
||||||
|
|
||||||
LangChain stands out as a powerful framework for developers, utilizing and integrating well-known open-source libraries.
|
LangChain stands out as a powerful framework for developers, utilizing and integrating well-known open-source libraries.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ tags: [agile, architecture]
|
|||||||
|
|
||||||
A core concept of Domain-Driven Design (DDD) is the distillation of the problem domain into distinct, bounded contexts, with dedicated teams assigned to and responsible for those contexts. Microservices are often used to implement these bounded contexts in software applications. The communication patterns between teams will shape how these microservices are designed and interact, as per Conway's Law.
|
A core concept of Domain-Driven Design (DDD) is the distillation of the problem domain into distinct, bounded contexts, with dedicated teams assigned to and responsible for those contexts. Microservices are often used to implement these bounded contexts in software applications. The communication patterns between teams will shape how these microservices are designed and interact, as per Conway's Law.
|
||||||
|
|
||||||
Team autonomy is crucial for achieving a truly independent microservice architecture, driving innovation and agility. However, full autonomy can lead to the formation of microsilos: isolated teams working independently, often resulting in inconsistent implementations, communication gaps, and hidden dependencies and redundancies.
|
Team autonomy is crucial for achieving a truly independent microservice architecture, driving innovation and agility. However, full autonomy can lead to the formation of microsilos: isolated teams working independently, often resulting in inconsistent implementations, communication gaps, hidden dependencies, and redundancies.
|
||||||
|
|
||||||
### Mitigation Strategies
|
### Mitigation Strategies
|
||||||
- **Strategic Domain-Driven Design**: Ensure that bounded contexts and their interrelationships are well-defined, both organizationally (team structure) and technically (interfaces).
|
- **Strategic Domain-Driven Design**: Ensure that bounded contexts and their interrelationships are well-defined, both organizationally (team structure) and technically (interfaces).
|
||||||
|
|||||||
@@ -12,11 +12,8 @@ The concept of the strategic monolith stems from the idea that starting with a m
|
|||||||
### Benefits
|
### Benefits
|
||||||
|
|
||||||
- **Future-Proof Architecture**: Modular design within a monolith allows for parts of the system to be easily extracted into individual microservices as requirements evolve or the business grows. This approach ensures that the architecture can adapt to changing needs without extensive refactoring.
|
- **Future-Proof Architecture**: Modular design within a monolith allows for parts of the system to be easily extracted into individual microservices as requirements evolve or the business grows. This approach ensures that the architecture can adapt to changing needs without extensive refactoring.
|
||||||
|
|
||||||
- **Operational Simplicity**: Starting with a monolithic architecture simplifies deployment and management by keeping all modules within a single deployable unit. This reduces the complexity and overhead associated with distributed systems, such as handling inter-service communication, distributed data management, and comprehensive monitoring.
|
- **Operational Simplicity**: Starting with a monolithic architecture simplifies deployment and management by keeping all modules within a single deployable unit. This reduces the complexity and overhead associated with distributed systems, such as handling inter-service communication, distributed data management, and comprehensive monitoring.
|
||||||
|
|
||||||
- **Performance and Latency Benefits**: Intra-process communication within a monolith results in lower latency and higher performance compared to inter-service communication in microservices. This ensures that the system remains responsive and efficient as it scales.
|
- **Performance and Latency Benefits**: Intra-process communication within a monolith results in lower latency and higher performance compared to inter-service communication in microservices. This ensures that the system remains responsive and efficient as it scales.
|
||||||
|
|
||||||
- **Reduced Complexity**: A "monolith first" approach avoids the initial challenges of distributed systems, allowing teams to focus on building robust features and gaining a deep understanding of the domain before considering a transition to microservices.
|
- **Reduced Complexity**: A "monolith first" approach avoids the initial challenges of distributed systems, allowing teams to focus on building robust features and gaining a deep understanding of the domain before considering a transition to microservices.
|
||||||
|
|
||||||
At AOE, we strive to follow this approach when starting greenfield projects. We aim to balance between creating systems that are "as small as possible" yet "as big as necessary," ensuring robust and maintainable architectures that can scale and evolve with business needs. This provides a balanced path that aligns immediate development needs with long-term architectural goals.
|
At AOE, we strive to follow this approach when starting greenfield projects. We aim to balance between creating systems that are "as small as possible" yet "as big as necessary," ensuring robust and maintainable architectures that can scale and evolve with business needs. This provides a balanced path that aligns immediate development needs with long-term architectural goals.
|
||||||
|
|||||||
@@ -5,5 +5,3 @@ quadrant: platforms-and-aoe-services
|
|||||||
tags: [devops]
|
tags: [devops]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|
||||||
OCI Containers are a well-established industry standard now.
|
|
||||||
|
|||||||
@@ -5,12 +5,12 @@ quadrant: tools
|
|||||||
tags: [ai, coding]
|
tags: [ai, coding]
|
||||||
---
|
---
|
||||||
|
|
||||||
Running large language models local?
|
Running large language models locally?
|
||||||
|
|
||||||
Downloading [Ollama](https://ollama.com/download) and typing `ollama run llama3` is all you need.
|
Downloading [Ollama](https://ollama.com/download) and typing `ollama run llama3` is all you need.
|
||||||
|
|
||||||
Ollama is great to run various open source (open weight) models local and interact with them. You can do this either via the command line or via the [Ollama API](https://github.com/ollama/ollama/blob/main/docs/api.md).
|
Ollama is great for running various open source (open weight) models locally and interacting with them. You can do this either via the command line or via the [Ollama API](https://github.com/ollama/ollama/blob/main/docs/api.md).
|
||||||
|
|
||||||
Ollama takes care of downloading and running models and it supports the specification of own model packages in a "Modelfile".
|
Ollama takes care of downloading and running models, and it supports the specification of your own model packages in a "Modelfile".
|
||||||
|
|
||||||
At AOE, we use it for local development and testing.
|
At AOE, we use it for local development and testing.
|
||||||
|
|||||||
@@ -5,16 +5,15 @@ quadrant: tools
|
|||||||
tags: [architecture]
|
tags: [architecture]
|
||||||
---
|
---
|
||||||
|
|
||||||
The [OpenAPI Specification](https://www.openapis.org/) (OAS) is a broadly adopted industry standard for describing modern REST APIs.
|
The [OpenAPI Specification](https://www.openapis.org/) (OAS) is a broadly adopted industry standard for describing modern REST APIs. Other initiatives like RAML have [joined](https://blogs.mulesoft.com/dev/api-dev/open-api-raml-better-together/) the OpenAPI Initiative.
|
||||||
Other initiatives like RAML have [joined](https://blogs.mulesoft.com/dev/api-dev/open-api-raml-better-together/) the OpenAPI Initiative.
|
|
||||||
|
|
||||||
**OpenAPI v3**
|
**OpenAPI v3**
|
||||||
|
|
||||||
The current version OpenAPI v3 added more features to the specification - for example the ability to describe APIs supporting request/callback pattern.
|
The current version, OpenAPI v3, added more features to the specification, for example, the ability to describe APIs supporting request/callback patterns.
|
||||||
|
|
||||||
There is a very good api designer https://www.apicur.io/ and a good mock generator http://microcks.github.io/
|
There is a very good API designer: [Apicurio](https://www.apicur.io/) and a good mock generator: [Microcks](http://microcks.github.io/).
|
||||||
|
|
||||||
The general tool support is excellent. See https://openapi.tools/
|
The general tool support is excellent. See [OpenAPI Tools](https://openapi.tools/).
|
||||||
|
|
||||||
**TM Forum Open API**
|
**TM Forum Open API**
|
||||||
|
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ quadrant: platforms-and-aoe-services
|
|||||||
tags: [devops]
|
tags: [devops]
|
||||||
---
|
---
|
||||||
|
|
||||||
[OpenTofu](https://opentofu.org/) is a open source, community driven fork of terraform in response to HashiCorps license changes. It's terraform 1.6 compatible and can act as a drop-in replacement. We watch development and ecosystem growth closely and evaluate a move from terraform to OpenTofu in some projects.
|
[OpenTofu](https://opentofu.org/) is an open-source, community-driven fork of [Terraform](/platforms-and-aoe-services/terraform/) in response to HashiCorp's license changes. It's Terraform 1.6 compatible and can act as a drop-in replacement. We watch development and ecosystem growth closely and evaluate a move from Terraform to OpenTofu in some projects.
|
||||||
|
|||||||
@@ -5,12 +5,8 @@ quadrant: languages-and-frameworks
|
|||||||
tags: [ci/cd, devops]
|
tags: [ci/cd, devops]
|
||||||
---
|
---
|
||||||
|
|
||||||
[PKL](https://pkl-lang.org/) -- pronounced Pickle -- is a configuration language created by Apple. It provides rich support for data templating
|
[PKL](https://pkl-lang.org/) -- pronounced Pickle -- is a configuration language created by Apple. It provides rich support for data templating and validation and can be used simply from the command line, integrated into build pipelines, or embedded into programs. PKL also provides some tooling around package management, which makes it easy to split up bigger projects into packages or just consume packages that are already out there.
|
||||||
and validation and can be used, simply from commandline, integrated into build-pipelines or embedded into programs. PKL
|
|
||||||
also provides some tooling around package-management, which makes it easy to split up bigger project into packages or
|
|
||||||
just consume packages that are already out there.
|
|
||||||
|
|
||||||
Available PKL packages and docs can be found [here](https://pkl-lang.org/package-docs/).
|
Available PKL packages and docs can be found [here](https://pkl-lang.org/package-docs/).
|
||||||
|
|
||||||
At AOE we are using pkl currently for generation of different kinds of DevOps resources like Gitlab-CI
|
At AOE, we are currently using PKL for the generation of different kinds of DevOps resources like GitLab CI pipelines or Kubernetes resources, but this might change.
|
||||||
Pipelines or Kubernetes resources, but this might change.
|
|
||||||
|
|||||||
@@ -6,4 +6,4 @@ tags: [devops]
|
|||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|
||||||
Puppet works well for over 11 years for us.
|
Puppet has worked well for us for over 11 years.
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ quadrant: languages-and-frameworks
|
|||||||
tags: [coding, frontend]
|
tags: [coding, frontend]
|
||||||
---
|
---
|
||||||
|
|
||||||
With Remix v2.2.0 Remix itself is now just a Vite plugin. This gives us access to the entire ecosystem of Vite plugins and even more, for example:
|
With Remix v2.2.0, Remix itself is now just a Vite plugin. This gives us access to the entire ecosystem of Vite plugins and even more, for example:
|
||||||
|
|
||||||
- **Near-instant dev startup.** Vite lazily compiles your app code on-demand, so the dev server can boot immediately.
|
- **Near-instant dev startup**: Vite lazily compiles your app code on-demand, so the dev server can boot immediately.
|
||||||
- **Pre-bundled dependencies.** Vite only processes dependencies once, so large libraries like Material UI and AntD don’t become bottlenecks for rebuilds nor hot updates.
|
- **Pre-bundled dependencies**: Vite only processes dependencies once, so large libraries like Material UI and AntD don’t become bottlenecks for rebuilds or hot updates.
|
||||||
- **Incremental hot updates.** Vite keeps track of dependencies so it only needs to reprocess app code that depends on the changes.
|
- **Incremental hot updates**: Vite keeps track of dependencies so it only needs to reprocess app code that depends on the changes.
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ tags: [ai]
|
|||||||
### Challenges
|
### Challenges
|
||||||
|
|
||||||
- **Latency**: Retrieving and processing external data in real-time can introduce latency, potentially slowing down response times compared to purely generative models.
|
- **Latency**: Retrieving and processing external data in real-time can introduce latency, potentially slowing down response times compared to purely generative models.
|
||||||
- **Dependence on external data quality**: The accuracy and relevance of the generated content is highly dependent on the quality and reliability of the external data sources. Poor quality or outdated data can negatively impact the results.
|
- **Dependence on external data quality**: The accuracy and relevance of the generated content are highly dependent on the quality and reliability of the external data sources. Poor quality or outdated data can negatively impact the results.
|
||||||
- **Security and privacy**: Accessing *external* data sources can expose the system to security vulnerabilities and privacy concerns. Mitigation strategies include careful data access management and robust security measures in the retrieval process.
|
- **Security and privacy**: Accessing external data sources can expose the system to security vulnerabilities and privacy concerns. Mitigation strategies include careful data access management and robust security measures in the retrieval process.
|
||||||
- **Maintenance overhead**: Regular updates and maintenance of the retrieval system and data sources are required to ensure continued accuracy and relevance, adding to the operational burden.
|
- **Maintenance overhead**: Regular updates and maintenance of the retrieval system and data sources are required to ensure continued accuracy and relevance, adding to the operational burden.
|
||||||
- **Potential for bias**: The retrieval process can introduce biases present in the external data, which can be propagated into the generated content, affecting the fairness and objectivity of the outputs.
|
- **Potential for bias**: The retrieval process can introduce biases present in the external data, which can be propagated into the generated content, affecting the fairness and objectivity of the outputs.
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
title: "RxJava"
|
title: "RxJava"
|
||||||
ring: trial
|
ring: trial
|
||||||
quadrant: tools
|
quadrant: tools
|
||||||
tags: [coding, architecture]
|
tags: [architecture, coding]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
title: "Self-Service Infrastructure"
|
title: "Self-Service Infrastructure"
|
||||||
ring: trial
|
ring: trial
|
||||||
quadrant: platforms-and-aoe-services
|
quadrant: platforms-and-aoe-services
|
||||||
tags: [devops, agile]
|
tags: [agile, devops]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -5,10 +5,6 @@ quadrant: platforms-and-aoe-services
|
|||||||
tags: [architecture, devops, security]
|
tags: [architecture, devops, security]
|
||||||
---
|
---
|
||||||
|
|
||||||
Service Meshes are part of all our Kubernetes implementations now.
|
Service Meshes are part of all our Kubernetes implementations now. We value the additional security features they provide to our platforms.
|
||||||
We value the additional security features they provide to our platforms.
|
|
||||||
|
|
||||||
We are using [Istio](https://istio.io/) on multiple production clusters
|
We are using [Istio](https://istio.io/) on multiple production clusters and are assessing [Cilium](https://docs.cilium.io/en/latest/network/servicemesh/) as it also improves on Kubernetes' NetworkPolicies. We also consider [Linkerd](https://linkerd.io) a good candidate when looking for a Service Mesh for your project.
|
||||||
and are assessing [Cillium](https://docs.cilium.io/en/latest/network/servicemesh/)
|
|
||||||
as it also improves on Kubernetes' NetworkPolicies. We also consider [Linkerd](https://linkerd.io)
|
|
||||||
a good candidate when looking for a Service Mesh for your project.
|
|
||||||
|
|||||||
@@ -5,4 +5,4 @@ quadrant: tools
|
|||||||
tags: [architecture, coding]
|
tags: [architecture, coding]
|
||||||
---
|
---
|
||||||
|
|
||||||
[Socket.IO](https://socket.io) is a library for enabling real-time, bidirectional communication between web clients and servers based on websockets. It simplifies complex tasks involved in real-time data transfer and supports features like automatic reconnection and fallback to different transports if needed. This makes it ideal for applications such as chat apps, live notifications, and collaborative tools. Its event-based architecture and support for namespaces and rooms make it versatile and scalable. We are currently evaluating if its usage could be benificial for some of our projects.
|
[Socket.IO](https://socket.io) is a library for enabling real-time, bidirectional communication between web clients and servers based on websockets. It simplifies complex tasks involved in real-time data transfer and supports features like automatic reconnection and fallback to different transports if needed. This makes it ideal for applications such as chat apps, live notifications, and collaborative tools. Its event-based architecture and support for namespaces and rooms make it versatile and scalable. We are currently evaluating if its usage could be beneficial for some of our projects.
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ In addition, new tools and techniques have emerged that support the practical ap
|
|||||||
|
|
||||||
* **Core Domain Charts**: Introduced by Eric Evans in 2019, these support the identification and prioritization of core business domains, ensuring that critical areas receive appropriate focus and resources.
|
* **Core Domain Charts**: Introduced by Eric Evans in 2019, these support the identification and prioritization of core business domains, ensuring that critical areas receive appropriate focus and resources.
|
||||||
* **Event Storming**: A popular workshop format for collaboratively exploring complex domains, facilitating a shared understanding and uncovering domain insights.
|
* **Event Storming**: A popular workshop format for collaboratively exploring complex domains, facilitating a shared understanding and uncovering domain insights.
|
||||||
* **Wardley Maps**: Created by Simon Wardley, are a visualization tool that helps organizations understand their business landscape, anticipate change, and identify strategic opportunities.
|
* **Wardley Maps**: Created by Simon Wardley, these are a visualization tool that helps organizations understand their business landscape, anticipate change, and identify strategic opportunities.
|
||||||
|
|
||||||
The continuing relevance of Eric Evans' *Domain-Driven Design*, more than 20 years after after the book was first published, underscores its importance in modern software development.
|
The continuing relevance of Eric Evans' *Domain-Driven Design*, more than 20 years after the book was first published, underscores its importance in modern software development.
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Facebook has released [StyleX](https://stylexjs.com/), an open-source JavaScript
|
|||||||
|
|
||||||
It supports frameworks like [React](/languages-and-frameworks/react/) and [Angular](/languages-and-frameworks/angular/). Styles are defined using an object syntax and `create()` API, and can be conditionally applied within components.
|
It supports frameworks like [React](/languages-and-frameworks/react/) and [Angular](/languages-and-frameworks/angular/). Styles are defined using an object syntax and `create()` API, and can be conditionally applied within components.
|
||||||
|
|
||||||
### Key Features:
|
### Key Features
|
||||||
- **Atomic CSS**: Minimizes CSS output
|
- **Atomic CSS**: Minimizes CSS output
|
||||||
- **Type-Safe**: Ensures reliability in large projects
|
- **Type-Safe**: Ensures reliability in large projects
|
||||||
- **Composable**: Facilitates reusable components
|
- **Composable**: Facilitates reusable components
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ tags: [devops, security]
|
|||||||
|
|
||||||
Software supply chain security is a complex endeavor. Attack vectors range from external dependencies in source code to operating systems and tools used in build, test, and production environments. Compromise of a single stage of the supply chain may lead to compromise of the produced software and subsequently of customers that rely on it.
|
Software supply chain security is a complex endeavor. Attack vectors range from external dependencies in source code to operating systems and tools used in build, test, and production environments. Compromise of a single stage of the supply chain may lead to compromise of the produced software and subsequently of customers that rely on it.
|
||||||
|
|
||||||
Over the last years, successful attacks on large software vendors have demonstrated the potential impact of such attacks. For instance, the SolarWinds Orion software was [compromised](https://en.wikipedia.org/wiki/SolarWinds#2019%E2%80%932020_supply_chain_attacks) due to an insecure password that allowed attackers to inject a backdoor into software artifacts. Several SolarWinds customers, including US federal government agencies, were compromised as a result of this attack. The [xz backdoor](https://tukaani.org/xz-backdoor/) showed that malicious parties are also stepping up their efforts to place backdoors in widely used open-source software projects in ways that are very hard to detect and prevent.
|
Over the last few years, successful attacks on large software vendors have demonstrated the potential impact of such attacks. For instance, the SolarWinds Orion software was [compromised](https://en.wikipedia.org/wiki/SolarWinds#2019%E2%80%932020_supply_chain_attacks) due to an insecure password that allowed attackers to inject a backdoor into software artifacts. Several SolarWinds customers, including US federal government agencies, were compromised as a result of this attack. The [xz backdoor](https://tukaani.org/xz-backdoor/) showed that malicious parties are also stepping up their efforts to place backdoors in widely used open-source software projects in ways that are very hard to detect and prevent.
|
||||||
|
|
||||||
Software libraries and other external dependencies are a major attack vector when building software. We use the following measures regarding external dependencies to improve supply chain security:
|
Software libraries and other external dependencies are a major attack vector when building software. We use the following measures regarding external dependencies to improve supply chain security:
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "Svelte"
|
title: "Svelte"
|
||||||
ring: trial
|
ring: trial
|
||||||
quadrant: "languages-and-frameworks"
|
quadrant: languages-and-frameworks
|
||||||
tags: [coding, frontend]
|
tags: [coding, frontend]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -8,6 +8,6 @@ featured: false
|
|||||||
|
|
||||||
Terraform has become a de facto standard as a cloud-provider-agnostic infrastructure-as-code tool in recent years.
|
Terraform has become a de facto standard as a cloud-provider-agnostic infrastructure-as-code tool in recent years.
|
||||||
|
|
||||||
Unfortunately, the [license change for HashiCorp products in August 2023](https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license) has caused [some](https://blog.gruntwork.io/the-future-of-terraform-must-be-open-ab0b9ba65bca) [turmoil](https://zeet.co/blog/the-impact-of-hashicorps-license-change-on-terraform-users-and-providers-what-you-need-to-know) within the open source community. Terraform can no longer be considered truly open source. Of particular concern are the [usage limitations that prohibit "competitive offerings" to HashiCorp's products](https://www.hashicorp.com/license-faq#usage-limitations). The vagueness of this definition, coupled with the fact that HashiCorp can change their interpretation of what constitutes a "competitive offer" at any time, poses a potential liability for agencies and their customers.
|
Unfortunately, the [license change for HashiCorp products in August 2023](https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license) has caused [some](https://blog.gruntwork.io/the-future-of-terraform-must-be-open-ab0b9ba65bca) [turmoil](https://zeet.co/blog/the-impact-of-hashicorps-license-change-on-terraform-users-and-providers-what-you-need-to-know) within the open-source community. Terraform can no longer be considered truly open source. Of particular concern are the [usage limitations that prohibit "competitive offerings" to HashiCorp's products](https://www.hashicorp.com/license-faq#usage-limitations). The vagueness of this definition, coupled with the fact that HashiCorp can change their interpretation of what constitutes a "competitive offer" at any time, poses a potential liability for agencies and their customers.
|
||||||
|
|
||||||
As a result, we are currently [assessing OpenTofu](/platforms-and-aoe-services/opentofu/) as a drop-in replacement for Terraform. [OpenTofu](https://opentofu.org) is an open source fork under the umbrella of the Linux Foundation, created from the last commit before Terraform's license change.
|
As a result, we are currently [assessing OpenTofu](/platforms-and-aoe-services/opentofu/) as a drop-in replacement for Terraform. [OpenTofu](https://opentofu.org) is an open-source fork under the umbrella of the Linux Foundation, created from the last commit before Terraform's license change.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
title: "Trivy"
|
title: "Trivy"
|
||||||
ring: adopt
|
ring: adopt
|
||||||
quadrant: tools
|
quadrant: tools
|
||||||
tags: [ci/cd,devops,security]
|
tags: [ci/cd, devops, security]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: "Turborepo"
|
title: "Turborepo"
|
||||||
ring: trial
|
ring: trial
|
||||||
quadrant: "tools"
|
quadrant: tools
|
||||||
tags: [frontend]
|
tags: [frontend]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
title: "Unleash"
|
title: "Unleash"
|
||||||
ring: adopt
|
ring: adopt
|
||||||
quadrant: tools
|
quadrant: tools
|
||||||
tags: [coding, frontend, devops]
|
tags: [coding, devops, frontend]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
title: "Vistecture"
|
title: "Vistecture"
|
||||||
ring: assess
|
ring: assess
|
||||||
quadrant: tools
|
quadrant: tools
|
||||||
tags: [documentation, architecture]
|
tags: [architecture, documentation]
|
||||||
featured: false
|
featured: false
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -11,6 +11,6 @@ Visual regression tests address several challenges. They ensure consistency in t
|
|||||||
|
|
||||||
Moreover, integrating visual regression tests into development pipelines enhances the reliability of deployments. By catching visual discrepancies early, it prevents potential UI issues from reaching end-users. This not only saves time and resources but also maintains the application's quality and reputation.
|
Moreover, integrating visual regression tests into development pipelines enhances the reliability of deployments. By catching visual discrepancies early, it prevents potential UI issues from reaching end-users. This not only saves time and resources but also maintains the application's quality and reputation.
|
||||||
|
|
||||||
Currently there are several AOE teams that use visual regression tests with [Playwright](/tools/playwright/) in their daily operations, with more teams expected to adopt this practice in the future.
|
Currently, several AOE teams use visual regression tests with [Playwright](/tools/playwright/) in their daily operations, with more teams expected to adopt this practice in the future.
|
||||||
|
|
||||||
In summary, visual regression tests are an invaluable tool for frontend developers. They streamline the development process, ensure visual consistency, and maintain high-quality user interfaces, making them an essential part of modern web development workflows.
|
In summary, visual regression tests are an invaluable tool for frontend developers. They streamline the development process, ensure visual consistency, and maintain high-quality user interfaces, making them an essential part of modern web development workflows.
|
||||||
|
|||||||
Reference in New Issue
Block a user