07/04/2021

AWS architecture overview

AWS is an online platform that provides scalable and cost-effective cloud solutions. 

Servers are placed across the whole world inside 25 AWS regions, and 215 availability zones for disaster recovery purposes. 

It is a pay-as-you-go pricing system, which means that you pay for the amount of usage. 

Scalability (horizontal and vertical), high availability, performance, security, reliability are some of the features that AWS provides.

 

Widely used AWS services groups: 

 

  1. Compute AWS services
  2. Storage AWS services
  3. Networking AWS services
  4. Security & Identity AWS services etc…

 

Compute services: 

 

  1. EC2 
  2. Elastic Beanstalk
  3. Lambda
  4. Others

 

EC2

 

Amazon Elastic Compute Cloud (Amazon EC2) provides scalable computing capacity in the AWS Cloud. You can use Amazon EC2 to launch as many or as few virtual servers as you need, configure security and networking, and manage storage.

 

 

When you reserve an instance you need to choose an instance type that consists of instance family and instance size.

 

 

Each family is optimized for some workflow, and based on your setup you should choose the appropriate one.

 

 

When choosing storage for your EC2 you have 3 options: 

 

  1. Amazon EFS – shared file system for multiple instances
  2. Amazon EBS – detached block storage from your instances, snapshots are saved in S3
  3. Instance store – removed when an instance is terminated

 

For scaling purposes, AWS provides Auto Scaling Groups(ASG) and Load Balancers. 

When defining ASG, you define the minimum, desired and maximum number of instances, AWS will add or remove instances based on your configuration example when the CPU reaches over 80%.

A load balancer is used for intelligent routing or requests, it can be internet-facing ( public ) or internal ( between private instances) 

 

Storage AWS  services:

 

  1. S3
  2. EBS
  3. EFS
  4. S3 Glacier
  5. Others

 

S3 general information: 

 

  1. Object-based storage
  2. Objects are stored in buckets
  3. Data is stored across multiple devices
  4. 99.999999999% durability
  5. 99.99% availability

S3 Features: 

 

  1. Static Website Hosting
  2. Cross-Region Replication
  3. Data encryption
  4. Security
  5. Versioning
  6. Emit event

 

Networking services

 

 

VPC is the main representative of this group. In the example above we defined a simple VPC with a private and public subnet. Internet-facing servers are configured in a public subnet, and private servers are not exposed to the internet, and so put inside a private subnet. 

Nat gateway is one of the possibilities to provide internet to private servers without exposing them to the internet.

Route tables are used for request redirection inside VPC.

 

 

In this example, it is demonstrated how security inside VPC is handled. Before each subnet, we have Access Control Lists ( ACL) where we define inbound and outbound rules for accessing the subnet. The second level of security is Security groups, which are checked before reaching concrete instances or instances.

 

Security and identity services

 

IAM is the main representative of this group.

 

It is defined by Users, Groups, and Roles, each one of them can have attached permissions to it, and you can assign users to groups or add them roles. 

To do some action on AWS, you need to have permission for it. It is defined by “least privilege” which means that by default users don’t have rights to anything and you need to specify and add one that you want to provide them with.

Examples: 

A typical architecture for serverless development: 

 

Mock example of Facebook architecture on AWS: 

 

source: www.youtube.com

photo source: www.youtube.com

 

For starters, some of the skills you should have:

  • excellent knowledge of Java (OOP)
  • good knowledge of Spring Boot 2 
  • good understanding of source control tools such as Git (Github, Bitbucket, or Gitlab)
  • experience with relational databases 
  • apply good technical practices and contribute to the application architecture with a focus on scalability, maintainability, security, and performance.
  • a college degree that corresponds to the required vacancy and at least 2 years of working experience in Java
  • excellent verbal and written communication skills in English

We can give you a fair amount of great benefits such as:

  • remote work
  • flexible working hours, no overtime policy
  • challenging international projects
  • Private health insurance
  • we are offering an honest, supportive, and friendly working environment
  • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

 Feel free to apply for the job if you think we are a perfect match!

    For starters, some of the skills you should have:

    • understanding of OOP concepts
    • Knowledge of REST/JSON Web Services and back-office applications using the newest Microsoft stack of technologies including C#, ASP.NET/ASP.NET Core, WebAPI, T-SQL, SQL Server, Entity Framework
    • Good understanding of Javascript, HTML, CSS
    • Good knowledge of GIT
    • Apply good technical practices and contribute to the application architecture with a focus on scalability, maintainability, security, and performance.
    • a college degree that corresponds to the required vacancy and at least 3 years of working experience for Medior/ at least 5 years for Senior
    • excellent verbal and written communication skills in English

    We can give you a fair amount of great benefits such as:

    • remote work
    • flexible working hours, no overtime policy
    • challenging international projects
    • Private health insurance
    • we are offering an honest, supportive, and friendly working environment
    • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

     Feel free to apply for the job if you think we are a perfect match!

      For starters, some of the skills you should have:

      • A background or qualification in computer science or digital design
      • 5+ years of coding and design experience
      • 2+ years of experience in React
      • understanding of SOLID principles
      • good knowledge of GIT
      • good knowledge of design patterns
      • Good knowledge of UI/UX common practices and standards
      • Webpack
      • SCSS
      • Unit and E2E tests 
      • Experience or motivation to work in Framer Motion

      We can give you a fair amount of great benefits such as:

      • remote work
      • flexible working hours, no overtime policy
      • challenging international projects
      • Private health insurance
      • we are offering an honest, supportive, and friendly working environment
      • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

       Feel free to apply for the job if you think we are a perfect match!

        Your skills are:

        • Angular 2+
        • Typescript
        • RxJS 
        • HTML5 
        • CSS3

        ...and you may have experience with:

        • Webpack 
        • SCSS, SASS 
        • Unit and E2E tests

        We can give you a fair amount of great benefits such as:

        • remote work
        • flexible working hours, no overtime policy
        • challenging international projects
        • Private health insurance
        • we are offering an honest, supportive, and friendly working environment
        • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

         Feel free to apply for the job if you think we are a perfect match!

          For starters, some of the skills you should have:

          • excellent knowledge of Java
          • knowledge of Spring Boot 2
          • know how to create automated workflows with Webpack, Gulp
          • good understanding of HTML5 and CSS3
          • good understanding of source control tools such as Git (Github, Bitbucket, or Gitlab)
          • experience with relational databases
          • experience working with microservices
          • AWS or another cloud provider (GCP, Azure, etc.)
          • experience working with Linux/Unix
          • proficiency in standards-compliant and cross-browser compatible code
          • apply good technical practices and contribute to the application architecture with a focus on scalability, maintainability, security, and performance.
          • a college degree that corresponds to the required vacancy and at least 5 years of working experience in Java
          • excellent verbal and written communication skills in English

          We can give you a fair amount of great benefits such as:

          • remote work
          • flexible working hours, no overtime policy
          • challenging international projects
          • Private health insurance
          • we are offering an honest, supportive, and friendly working environment
          • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

           Feel free to apply for the job if you think we are a perfect match!

            For starters, some of the skills you should have:

            • good programming skills
            • familiarity with API Development (REST, Web API)
            • understanding of OOP concepts
            • a bachelor degree that corresponds to the required vacancy
            • strong proficiency in JavaScript, including DOM manipulation and the JavaScript object model
            • thorough understanding of React.js and its core principles
            • experience with popular React.js workflows (such as Redux)
            • familiarity with specifications of Typescript
            • experience with React Saga
            • good knowledge of HTML5 and CSS3

            We can give you a fair amount of great benefits such as:

            • remote work
            • flexible working hours, no overtime policy
            • challenging international projects
            • Private health insurance
            • we are offering an honest, supportive, and friendly working environment
            • knowledge-sharing, transparent and proactive communication among the team are some of our greatest values

             Feel free to apply for the job if you think we are a perfect match!