sdp
An Android lib that provides a new size unit - sdp (scalable dp). This size unit scales with the screen size.
Top Related Projects
Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Pulumi - Infrastructure as Code in any programming language 🚀
The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
Azure Quickstart Templates
Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain. Automate everything from code deployment to network configuration to cloud management, in a language that approaches plain English, using SSH, with no agents to install on remote systems. https://docs.ansible.com.
Quick Overview
SDP (Service Deployment Platform) is an open-source project by Intuit that provides a framework for deploying and managing microservices at scale. It offers a unified approach to service deployment, monitoring, and lifecycle management across multiple cloud environments.
Pros
- Simplifies microservice deployment and management in complex cloud environments
- Supports multi-cloud deployments, enhancing flexibility and avoiding vendor lock-in
- Provides built-in monitoring and observability features
- Offers a standardized approach to service lifecycle management
Cons
- Steep learning curve for teams new to microservices architecture
- Limited documentation and community support compared to more established platforms
- May require significant initial setup and configuration
- Potential overhead for smaller projects or teams
Code Examples
# Example service definition in SDP
apiVersion: sdp.intuit.com/v1
kind: Service
metadata:
name: my-microservice
spec:
replicas: 3
container:
image: my-registry/my-microservice:v1.0.0
ports:
- containerPort: 8080
monitoring:
enabled: true
# Example deployment configuration
apiVersion: sdp.intuit.com/v1
kind: Deployment
metadata:
name: my-microservice-deployment
spec:
service: my-microservice
environment: production
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
# Example scaling policy
apiVersion: sdp.intuit.com/v1
kind: ScalingPolicy
metadata:
name: my-microservice-scaling
spec:
service: my-microservice
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 70
Getting Started
To get started with SDP, follow these steps:
-
Install the SDP CLI:
curl -sSL https://get.sdp.com | bash
-
Configure your cloud provider credentials:
sdp config set-context my-cloud --provider aws --region us-west-2
-
Create a service definition file (e.g.,
service.yaml
) and apply it:sdp apply -f service.yaml
-
Monitor your deployed service:
sdp get service my-microservice sdp logs my-microservice
For more detailed instructions and advanced usage, refer to the official SDP documentation.
Competitor Comparisons
Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Pros of Terraform
- Widely adopted and supported by major cloud providers
- Extensive documentation and large community
- Supports a broader range of infrastructure providers
Cons of Terraform
- Steeper learning curve for complex deployments
- State management can be challenging in large-scale environments
- Limited support for runtime configuration changes
Code Comparison
Terraform:
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
SDP:
resources:
- name: example-instance
type: aws::ec2::instance
properties:
ImageId: ami-0c55b159cbfafe1f0
InstanceType: t2.micro
Both Terraform and SDP provide declarative ways to define infrastructure, but Terraform uses its own HCL language, while SDP uses YAML. Terraform's syntax is more concise, but SDP's YAML structure may be more familiar to some users.
Terraform is more established and versatile, supporting a wider range of providers and use cases. However, SDP offers a simpler approach for specific scenarios, particularly within the Intuit ecosystem. The choice between the two depends on the specific requirements of your project and your team's familiarity with each tool.
Pulumi - Infrastructure as Code in any programming language 🚀
Pros of Pulumi
- Supports multiple programming languages (TypeScript, Python, Go, etc.) for infrastructure as code
- Offers a more flexible and powerful approach to infrastructure management
- Has a larger community and more extensive documentation
Cons of Pulumi
- Steeper learning curve, especially for those new to programming
- May require more setup and configuration compared to SDP
- Can be more complex for simple infrastructure tasks
Code Comparison
SDP (YAML-based):
resources:
- name: my-bucket
type: s3-bucket
properties:
bucketName: my-unique-bucket-name
Pulumi (TypeScript):
import * as aws from "@pulumi/aws";
const bucket = new aws.s3.Bucket("my-bucket", {
bucket: "my-unique-bucket-name",
});
Summary
Pulumi offers a more versatile and powerful approach to infrastructure as code, supporting multiple programming languages and providing extensive capabilities. However, it may have a steeper learning curve compared to SDP. SDP, on the other hand, uses a simpler YAML-based configuration, which can be easier for beginners or straightforward infrastructure tasks. The choice between the two depends on the complexity of your infrastructure needs and your team's programming expertise.
The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
Pros of AWS CDK
- More comprehensive AWS service coverage
- Larger community and ecosystem
- Supports multiple programming languages (TypeScript, Python, Java, etc.)
Cons of AWS CDK
- Steeper learning curve for beginners
- More complex setup and configuration
- Limited to AWS infrastructure
Code Comparison
SDP example:
resources:
- name: my-bucket
type: s3-bucket
properties:
bucketName: my-unique-bucket-name
AWS CDK example:
import * as s3 from '@aws-cdk/aws-s3';
const bucket = new s3.Bucket(this, 'MyBucket', {
bucketName: 'my-unique-bucket-name',
});
SDP focuses on simplicity and ease of use, using YAML for configuration. AWS CDK offers more flexibility and power through programming languages like TypeScript, but requires more code and setup. SDP is designed for multi-cloud deployments, while AWS CDK is specific to AWS services. AWS CDK has a larger community and more extensive documentation, but may be overwhelming for newcomers compared to SDP's straightforward approach.
Azure Quickstart Templates
Pros of azure-quickstart-templates
- Extensive collection of Azure deployment templates covering a wide range of scenarios
- Well-maintained and regularly updated by Microsoft and the community
- Includes detailed documentation and parameter files for each template
Cons of azure-quickstart-templates
- Focused solely on Azure, limiting its use for multi-cloud deployments
- May require more Azure-specific knowledge to customize and implement
- Large repository size can make it challenging to navigate and find specific templates
Code Comparison
sdp:
apiVersion: sdp.intuit.com/v1
kind: Service
metadata:
name: example-service
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
azure-quickstart-templates:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"name": "[parameters('vnetName')]",
"location": "[parameters('location')]"
}
]
}
The sdp repository focuses on Kubernetes-based service definitions, while azure-quickstart-templates provides Azure Resource Manager (ARM) templates for deploying various Azure resources. The code snippets showcase the different syntax and structure used in each project, reflecting their distinct purposes and target platforms.
Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain. Automate everything from code deployment to network configuration to cloud management, in a language that approaches plain English, using SSH, with no agents to install on remote systems. https://docs.ansible.com.
Pros of Ansible
- Larger community and ecosystem with extensive documentation
- Broader scope for IT automation beyond just deployment
- Agentless architecture, requiring no additional software on managed nodes
Cons of Ansible
- Steeper learning curve due to its extensive features
- Can be slower for large-scale deployments compared to SDP
- More complex setup and configuration process
Code Comparison
Ansible playbook example:
- name: Install nginx
hosts: webservers
tasks:
- name: Ensure nginx is installed
apt:
name: nginx
state: present
SDP deployment example:
apiVersion: sdp/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
containers:
- name: nginx
image: nginx:latest
Summary
Ansible is a more comprehensive IT automation tool with a larger community, while SDP focuses specifically on simplified deployment processes. Ansible offers greater flexibility but may require more time to master, whereas SDP provides a more streamlined approach for deployment-centric tasks. The choice between the two depends on the specific needs of the project and the team's expertise.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
SDP - a scalable size unit
An android lib that provides a new size unit - sdp (scalable dp). This size unit scales with the screen size. It can help Android developers with supporting multiple screens.
for text views please refer to ssp which is based on the sp size unit for texts.
Attention
Use it carefully! for example, in most cases you still need to design a different layout for tablets.
Example
Here is a single layout built using sdp:
And here is the same layout built using dp:
You can see that sdp scales with the screen size and the dp stays with the same size on all screen sizes.
Getting Started
To add sdp to your project (Using Android Studio and Gradle):
add implementation 'com.intuit.sdp:sdp-android:1.1.1' to your build.gradle dependencies block.
for example:
dependencies {
implementation 'com.intuit.sdp:sdp-android:1.1.1'
}
See the sdp_example.xml to see how to use to the sdp size unit.
For easy mapping of designs to sdp units, one can create designs with 300 pixels screen width - in this case each pixel in the design corresponds to 1 sdp.
Note
The sdp size unit calculation includes some approximation due to some performance and usability constraints.
Top Related Projects
Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Pulumi - Infrastructure as Code in any programming language 🚀
The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
Azure Quickstart Templates
Ansible is a radically simple IT automation platform that makes your applications and systems easier to deploy and maintain. Automate everything from code deployment to network configuration to cloud management, in a language that approaches plain English, using SSH, with no agents to install on remote systems. https://docs.ansible.com.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot