why yac?
Our Operating Principals
We are the DevOps tools team, and we operate a number of stateful services, including:
GitLab (AWS)
Artifactory (K8s+AWS)
Jira (K8s+AWS)
Confluence (VMWare)
Nexus (VMWare)
Bitbucket (VMWare)
Like you, we are passionate about automating our service deploys in order to achieve high service availability.
yac evolved from our service operating principals, which include:
maximize service availability by
minimizing operator toil
maximizing code reuse
leveraging the engineering platform
minimizing external dependencies and risks
maximize team productivity by
minimizing external dependencies
making best practices easy to consume
minimize service costs
maximize state integrity and durability
Principals Alignment
yac aligns nicely with our operating principals by the following measures:
Because yac allows your complete pipeline to be configured instead of coded/scripted, including:
artifact builds (e.g. container images and AMIs)
stack templates (e.g. k8s or aws)
integration tests (e.g. artillery or custom)
pipeline stages
recurring tasks (e.g. api calls)
Because yac makes is easier to minimize cost
companies like us use a hybrid cloud approach to minimize costs
yac workflows are the same for all cloud providers
cost estimates are provided in build dry runs
Because yac satisfies the 100% pipeline use case
incorporate python code for complex pipelines
easy to add support for new cloud providers, artifacts types, etc.
Because yac was designed for DevOps teams
there are a lot of orchestration tools (ansible, chef, puppet, etc)
most are IT-centric rather than DevOps-centric
tool metaphors matter, and yac metaphors are pipeline driven
Because portable is better
running a service in your namespace should be as easy as running a container on your desktop
yac lets you share your services so others can instantiate them from a registry
Because yac knows all about Nordstrom's engineering platform
native support for all tools in the engineering platform including:
Kubernetes Clusters
AWS Cv2
Gitlab, including runners and registry
Artifactory repos
Datadog metrics and alerts (coming soon)
Hashicorp vaults (coming soon)
JIRA releases (coming soon)
ServiceNow changes (coming soon)
simplifies authentication in kubernetes and aws
Because your pipelines should work the same on your desktop as they do on your CI/CD server
yac and all of your development tools are packaged in a container
the yac cli is a shell function
allows seamless pipeline promotion from desktop to build server
removes build server dependency
Because yac minimizes the need for documentation
Servicefile object defaults contain most of the details of engineering platform services
yac provides a native inputs engine
the engine allows service providers to prompt service consumers for inputs
the result is prompted service installs
Because you are paranoid and only the paranoid survive!
you've been burned before on CI/CD systems
when you bet on yac, you are betting on python
yac is written in python and any custom scripts that your service build needs are written in python
yac leverages python client libraries that are available for all cloud providers
e.g. pykube for kubernetes api, boto3 for aws api calls, hvac for hashicorp vault, etc..