The Journey of #100DaysofCode Round#2 (@eliehannouch)

Hello lovely people, I’m here again joining the #100DaysofCode again for a second round, after finishing the first one covering a lot of topics concerning backend development, project management, software engineering and more.

Now the second round is here. And in this #100DaysofCode, I’ll be with you all covering System Design, starting from zero and reaching the hero level at the end of the 100 days. As we will go through principles, methods, theorem’s and of course a bunch of examples and real business solutions scenarios that will help you cracking System Design interviews :four_leaf_clover::fist:

See you all in my first day starting from tomorrow :man_technologist::white_check_mark:

6 Likes

100DaysofCode - Day 01

Hello amazing people, the first day in our system design journey is here. Be ready, & committed to be a game master in 100 days.

What is System Design ?

  • System design is the process of defining the architecture, interfaces, and data for a system that satisfies specific requirements. System design meets the needs of your business or organization through coherent and efficient systems. Once your business or organization determines its requirements, you can begin to build them into a physical system design that addresses the needs of your customers.

Why a developer should learn system design ?

  • Programming without an overall architecture or design in mind is like exploring a cave with only a flashlight: You don’t know where you’ve been, you don’t know where you’re going, and you don’t know quite where you are.

What we will cover in this journey !!

  1. System Design fundamental’s
  2. System Design patterns
  3. Databases
  4. Cloud & System Design
  5. System Design interviews
3 Likes

100DaysofCode - Day 02

Hello amazing folks, what an amazing day. The counter is increasing and only 98 day left :hugs::pleading_face:. What I really love about 100daysofcode is the commitment level that increase in me, talking and sharing with my amazing community new topics on a daily basis.

And for today we will start discussing Horizontal scaling / Vertical scaling, how they differ and when to implement each of them.

Horizontal scaling :roll_eyes: == Scaling out :hugs:

  • Horizontal scaling (aka scaling out) refers to adding additional nodes or machines to your infrastructure to cope with new demands.

  • If you are hosting an application on a server and find that it no longer has the capacity or capabilities to handle traffic, adding a server may be your solution.

                           

Advantages ? :hugs:

  • Increased performance

  • Increased resilience and fault tolerance

  • Scaling is easier from a hardware perspective

  • Fewer periods of downtime

Disadvantages? :smiling_face_with_tear:

  • Increased Initial costs

  • Increased complexity of maintenance and operation - Multiple servers are harder to maintain than a single server is.

Vertical scaling :thinking: == Scaling up :face_with_hand_over_mouth:

  • Coming from the horizontal scaling which means adding new nodes to handle the system traffic, vertical scaling describes adding more power to your current machines. For instance, if your server requires more processing power, vertical scaling would mean upgrading the CPUs. You can also vertically scale the memory, storage, or network speed.

  • Vertical scaling may also describe replacing a server entirely or moving a server’s workload to an upgraded one.

-                       

Advantages ? :hugs:

  • Cost-effective

  • Less complex process communication

  • Less complicated maintenance

Disadvantages? :smiling_face_with_tear:

  • Upgrade limitations

  • Single point of failure

  • Higher possibility for downtime

3 Likes

100DaysofCode - Day 03

Hello friends, a new day is here and a dose of new knowledge is required to wrap the day in an informative way. Today we will discuss some new topics in this amazing field, starting with a definition on servers than moving to proxy servers exploring their key role and importance in implementing secure systems.

What is a server ? :roll_eyes:

  • A server stores, sends, and receives data. In essence, it “serves” something else and exists to provide services. A computer, software program, or even a storage device may act as a server, and it may provide one service or several.

  • We have several types of servers, and each of them serve a specific purpose. Starting with mail servers, game servers, print servers, proxy servers and more.

Today friends, we are going to discuss what a proxy server is all about, it’s key role and the benefits from using it.

Proxy Server ? :thinking: == Forward proxy

  • A special type of servers, that act as a channel between a user and the internet. It separate the end user from the website they are browsing serving as a man in middle between them.

  • How a proxy server work?

    • It all start when the user send a request for an address from the end server
    • The traffic flows through a proxy server on it’s way to the address.
    • On the way back, and when the request comes back to the user, it flows back through the same proxy which then forwards it to the user.

           

Proxy servers Benefits ? :hugs:

  • :white_check_mark: Improved privacy

  • :white_check_mark: Improved security

  • :white_check_mark: Access to blocked resources

  • :white_check_mark: Cache data to speed up requests

  • :white_check_mark: Filter content

  • :white_check_mark: Control of the internet usage inside an organization, home …

3 Likes

100DaysofCode - Day 04

Hello community, the 4th day is here, and only 96 day are remaining. A lot of fun, knowledge are coming in this journey. And as everyday today we will discover a new and interesting topic in the system design industry. Micro-services architecture, it’s benefits and how to implement them.

What is a microservice ? :face_with_hand_over_mouth:

  • An architectural style that structures an application using loosely coupled services . It divides a large application into a collection of separate, modular services. These modules can be independently developed, deployed, and maintained.

The Most Compelling “Things” That Microservices Offer :thinking:

  1. Independent deployability

  2. Additional options for scaling up applications

  3. Help isolate the “blast radius” of service failures

  4. Allows developers to “buy into” a new series of options and choices that app developers can make

      image

Top 3 Reasons Why Organizations Should Leverage Microservices :blush:

  1. :1st_place_medal: A Need to Independently Deploy New Functionality with Zero Downtime

  2. :2nd_place_medal: A Need to Isolate Specific Data and Data Processing Through Data Partitioning

  3. :3rd_place_medal: A Need to Enable a High Degree of Team Autonomy

1 Like