Join us

Difference between Architecture and Design

archanddesign.png

There can be a great misunderstanding when it comes to design and architecture. As for me, when in the beginning of my career, I didn’t know the difference, but today I can see it clearly and I’ll show you how to do it.

Design (Code Design)

Let’s start talking about architecture from code design.


When you start the project you need to plan how the code structure will be created, what layers you need to build, and how these layers communicate between them.

Classic example:

Many applications have modules so, you need to plan how you define the responsibility for each of them, for example.

There are many ways for you to write a good code design that is scalable with a business context, that’s why we have the Design Patterns.

Here is what I use in my day by day

  • Singleton
  • Strategy
  • Proxy
  • Builder

Architecture

The architecture plan the infrastructure, at a high level, the components of the application with a deal of the business. For example, if your product needs to be modified fast, you need an architecture to be extensible, scalable, and viable.

A classic example is a microservices architecture, which is very popular when you think about building an application from the cloud because it’s easier to scale services with cloud tools, and you gain other important tools like monitoring tools, for example, that are very important to this architecture and you need to plan how you to monitoring your microservice application too.

You need to know about the non-functional requisite to build the application architecture, it’s another important point to help you to plan an architecture.

You also need to know the project cost, as I mentioned, architecture needs to be viable.

When planning the system architecture we need separate the domain application, the communication between them, how this communication will be fault tolerance, and how will be the infrastructure will be (on-premise or cloud).

Architecture Style

  • Microservice Architecture
  • Monolith Architecture
  • Serverless

Communication Style

  • Synchronous Blocking
  • Asynchronous nonblocking

Synchronous Blocking

  • Request Response — Rest Over HTTP, RPC

Asynchronous nonblocking

  • Queue — Amazon SQS
  • Topics — Amazon SNS, Google PubSub

Conclusion

Code design is how the application code structure will be implemented, how will be the responsibilities for each class, the domain in your application, how the modules will be structured, and will be the communication between modules layers.

Architecture plan the segregation (if necessary) between the components at a high level, how will be the responsibilities of these components, and how will be the communication between them.


Only registered users can post comments. Please, login or signup.

Start blogging about your favorite technologies, reach more readers and earn rewards!

Join other developers and claim your FAUN account now!

Avatar

Andre Lucas

Software Enginner

@andrelucastic
Software Engineer - 6 years of experience with back-end applications’ development.
User Popularity
47

Influence

5k

Total Hits

2

Posts