Databases, Containers, Deployment Flashcards
What is Docker?
A platform for developing, shipping, and running applications in containers.
What are Containers?
Containers package an application and it’s dependencies together, ensuring it runs consistently across environments.
What is AWS ECS?
Elastic Container Service is a fully managed container orchestration service by Amazon Web Services that allows you to run, stop, and manage Docker containers on a cluster.
What is PostgreSQL?
An open-source relational database management system that uses SQL (Structured Query Language) to access and manage data.
How would you design a schema?
Identify entities and relationships e.g. Users and Orders with a one-to-many relationship
How do you optimize queries?
Use indexing, analyze query performance, and optimize joins
How can you manage database migrations?
Tools like knex.js manage schema changes over time.
Describe a complex SQL query
Joining multiple table to fetch user order history
What are some advantages of Docker?
Consistency across environments, simplifies dependency management, streamlines CI/CD
How do you manage Docker images?
Use Dockerfile to defined image and docker-compose
for multi-container applications
AWS ECS benefits
Manage containers, scale applications, integrate with other AWS services e.g. auto-scaling based on load
How can ECS overcome deployment challenges?
Issues like dependency conflicts are resolved using multi-stage builds and monitoring container health
What is the difference between an inner join and outer join in SQL?
Inner Join returns only the rows that have matching values in both tables
Outer Join returns all rows from one table and the matched rows from the other table
How can you optimize SQL queries?
- Create indexes on frequently searched columns
- Use EXPLAIN to analyze and optimize query performance
- Ensure joins use indexed columns and are written efficiently
3 Cloud Computing Models
- Infrastructure as a Service (IaaS) virtualized computing resources over the internet such as Amazon EC2 or Google Compute Engine
- Platform as a Service (PaaS) allows customers to develop, run, and manage applications without the complexity of building and maintaining infrastructure such as AWS Elastic Beanstalk or Google App Engine
- Software as a Service (SaaS) delivers applications over the internet such as Google Workspace or Salesforce
Describe Scalability and Elasticity
Scalability is the ability to handle increasing loads by adding resources either vertically (more power to an existing machine) or horizontally (more machines to a system), while Elasticity is the ability to scale resources up or down based on demand automatically
Cost Management
Pay-as-you-go Model when managed correctly through resource optimization
Cloud Security and Compliance
- Data Encryption at rest and in transit
- Identity and Access Management (IAM) controlling who can access what resources
- Compliance with regulations and standards e.d. HIPAA
DevOps
Software DEVelopment and IT OPerations to shorten the dev lifecycle and deliver quality software continuously
CI/CD
Continuous Integration/Continuous Deployment automates the process of integrating code changes and deploying them to prod with tools such as GitLab CI and AWS CodePipeline
Microservices Architecture
Microservices break applications into small, independent services that can be developed, deployed, and scaled independently, while Containerization packages applications and their dependencies into containers (Docker) to ensure consistency across environments
Serverless Computing
Allows developers to build and run apps without managing servers with tools such as AWE Lambda or Google Cloud Functions
API Management and Integrations
Create and manage secure APIs for communication between different services, connect and integrate various services and data sources
Cloud Data Management
Use managed databases and leverage cloud storage solutions
Monitoring and Logging
Monitor the performance and health of applications (Datadog)
Collect and analyze log data to troubleshoot and optimize applications (Splunk)