This is a continuation of articles on Infrastructure-as-code aka IaC for short. There’s no denying that IaC can help to create and manage infrastructure and that they can be versioned, reused and shared – all of which helps to provision resources quickly and consistently and manage them consistently throughout their lifecycle. Unlike software product code that must be general purpose and provide a strong foundation for system architecture and aspiring to be a platform for many use cases, IaC often varies a lot and must be manifested in different combinations depending on environment, purpose and scale and encompass complete development process. It can even include CI/CD platform, DevOps, and testing tools. The DevOps based approach is critical to rapid software development cycles. This makes IaC spread over in a variety of forms. The more articulated the IaC the more predictable and cleaner the deployments.
The IAC architecture is almost always dominated by the
choice of technology stacks. There is no universal system architecture but a
more devops oriented tailored approach with all the tools necessary to keep the
deployments consistent and repeatable. Technology varies with cloud native
forms, providers like Ansible, Terraform, and domain specific language such as
Pulumi. IaC can be curated as a set of machine-readable files, descriptive
model, configuration template, and an imperative approach. Then there are two approaches for writing it
which are an imperative approach and a declarative approach. The imperative
approach allows users to specify the exact steps to be taken for a change and
the system does not deviate from them while a declarative approach specifies
the final form and the tool or platform involved goes through the motion of
provisioning them.
Infrastructure can be made available as a service and shared
as code. Provisioning infrastructure can
be a cloud service and many public clouds offer it in their service portfolio.
These so-called native infrastructures are great for leveraging the public
cloud built-in features but more than usual, organizations build a veritable
library of assets and prefer it to not be limited to any one cloud-based
resources. It can even include on-premises infrastructure. No matter what
choices are made and the decision process for navigating the IaC landscape, it
is unquestionable that IaC reduces shadow IT within organizations, integrates
directly with CI/CD platforms, version controlling infrastructure and
configuration changes, standardizing infrastructure, effectively managing
configuration drift and with the ability to scale up or out without increasing
CapEx or OpEx.
Configuration Management is separate from infrastructure
management although tools like Ansible provide hybrid solutions. True
configuration management is demonstrated by software like CFEngine while
infrastructure management is demonstrated by providers like Terraform and
Pulumi. Businesses can mix and match any tool and use them in their CI/CD
pipelines depending on their custom requirements.
Q: An array A of N elements has each element within the
range 0 to N-1. Find the smallest element P such that every value that occurs
in A also occurs in sequence A[0], A[1] ... A[P]
For example, A = [2,2,1,0,1] and the smallest value of P is
3 where elements 2,2,1,0 contain all values that occur in A.
A:
public int getPrefix(int[] A) {
Int prefix = Integer.MIN_VALUE;
Int n = A.length;
Int visited = new int[n];
for (int i = 0; i < n; i++) {
if (visited[A[I]]
== 0){
visited[A[I]]
= 1;
prefix = I;
}
}
return prefix;
}
No comments:
Post a Comment