fabiochiu/medium-articles huggingface dataset:
Oh, Chas Wyatt https://raindrops.substack.com,
By: Lola Down
Tags: Money, Blog, Writing, Beauty, Art

Oh, Chas Wyatt https://raindrops.substack.com, you are not the only one being censored. A while back, when I was new at posting here, I had even more revealing photos of myself to accompany H.H.’s stories about me. Unlike Tumblr, PayPal, and other platforms, which just deleted or suspended my accounts without warning, Medium was gracious enough to send me a warning message and allow me to rectify the situation. Thus, many of my images are much more tame than I’d like. If you want the wet, wild, and wanker stuff, then go to mysexlifewithlola.com and click away!
g̶a̶m̶e̶ ̶r̶e̶c̶o̶g̶n̶i̶z̶e̶s̶ ̶g̶a̶m̶e̶
By: Isaiah Mccall
Tags: Typography, Blue Insights, Surrealism, Beauty, Poetry

Learn more. Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Make Medium yours. Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore
On Not Washing Your Face, Pretending It’s the 90s, & Knowing That Bad Mall Jobs Build Character
By: Gabrielle Moss
Tags: Nostalgia, Humor, Skincare, Beauty, Age

Photo by Buse Doga Ay on Unsplash

Hello and welcome to another round-up of stories you may have missed from Atta Girl, a publication for women who did not spontaneously combust on their 30th birthdays. Bizarre, I know! But somehow, here we are, still living our lives, thinking thoughts, and coming up with dynamic skin care routines. And we’re eager to share it all with you, dear readers!

We’ve collected a few stories you might have missed over the past two weeks. If checking out these stories lights a literary fire within you, we’d love to see your writing, too. Just submit a new essay to Atta Girl, or email us at attagirlmag@gmail.com.

We don’t care who you are, where you’re from, what you do, how you’re dealing with your maskne, or whether you think an all-white ensemble is an extremely hot look or something a cult leader would wear—we’re grateful for you. Enjoy the recent work of Atta Girl writers below.

Why are employers always asking irrelevant questions about Microsoft Office, when they should be asking about real professional skills—like how you coped with your that one terrible coworker you had at the Gap who just goofed around with their friends from Pretzel Time all shift, every shift.

2. Em Unraveling’s You Probably Need Some Pleather Leggings This Winter & Here’s Why

Have you been waiting for a sign to buy pleather pants? Well, here it is, bud!

3. Suman Sandhu’s Don’t Wash Your Face!

Are you sick of using 47 different products and still having your skin be a weird, flaky mess? Give this a shot.

4. Shanna Loga’s Calling Products “Pro-Aging” Doesn’t Change Their Message That Aging Is Bad

Who cares what you call it if you’re still gonna tell us there’s something wrong with having the skin of a human being who has lived past the age of 29?

5. Shani Silver’s I Bought Lady Gaga’s Eyeliner And Oh My God

I mean, are you surprised?

6. anniewood’s How Pretending It’s The 1990s Is Actually Good For You

Remember not knowing something and just kind of…not knowing it for a minute? God, wasn’t that relaxing?

For more information on what to pitch to Atta Girl, check this out.
Solution Architect Cheatsheet — Part 1
By: Deni Husni Fahri Rizal
Tags: Software Development, Software Engineering, Software Architecture

Learn more. Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Make Medium yours. Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore
Carnegie Mellon University SATURN
By: Sercan Çidem
Tags: Saturn 2019, The Atam, Software Architecture, Carnegie Mellon, Quality Attributes

The Carnegie Mellon® Software Engineering Institute (SEI) Software Architecture Technology User Network 2019 Conference was held on May 6–9, 2019, at the SEI in Pittsburgh, Pennsylvania.

I was one of the speakers at the conference which was great experience for me. I presented a talk titled “Developing Industrial Internet of Things (IIoT) systems using microservices and its architectural evaluation using ATAM (Architectural Trade Off Method)”.

The ATAM is a method for evaluating software architectures relative to quality attribute goals. ATAM evaluations expose architectural risks that potentially inhibit the achievement of an organization’s business goals. The ATAM gets its name because it not only reveals how well an architecture satisfies particular quality goals but also provides insight into how those quality goals interact with each other — how they trade off against each other.

The ATAM relies on the principle that an architecture is suitable (or not suitable) only in the context of specific quality attributes that it must impart to the system. The ATAM uses stakeholders’ perspectives to produce a collection of scenarios that define the qualities of interest for the particular system under consideration. Scenarios give specific instances of usage, performance and growth requirements, various types of failures, and various possible threats and modifications. Once the important quality attributes are identified in detail, the architectural decisions relevant to each one can be illuminated and analyzed with respect to their appropriateness.
Software Architecture Concepts: Architectural Perspectives
By: Ismayil Shahaliyev
Tags: Computer Science, Software Architecture, Software, Software Engineering, Software Development

Even though views and viewpoints are powerful, the need for specifying quality properties remain. On this matter, architectural perspectives come in handy. Instead of defining yet another viewpoint to describe the quality properties of a product, we define something “orthogonal” to viewpoints — perspectives (coined by the Software Systems Architecture authors, Nick Rozanski & Eoin Woods):

An architectural perspective is a collection of architectural activities, tactics, and guidelines that are used to ensure that a system exhibits a particular set of related quality properties that require consideration across a number of the system’s architectural views.

Although perspectives are often referred to as cross-cutting concerns or nonfunctional requirements, it is preferable to not use the latter term.

Architectural tactics may have a goal of achieving satisfactory system performance by defining different processing priorities for different parts of the system’s workload. The concept of tactic should not be mistaken for design pattern. Tactic is a thing more general and less constraining.

A perspective provides a framework. You never work with perspectives in isolation but use them with each view of your architecture. That is, you apply a perspective to a view.
Software Architecture
By: Ilyas Karimov
Tags: Viewpoints, Computer Science, Views, Software Architecture

Hello, Folks. In this article, we’ll be talking about architecture and some specific terms, stakeholders, views, and viewpoints. This topic might be new to most of us, enjoy!

I think to understand what a software architect does, we must first understand what an architect does. An architect is a person who plans, designs, oversees the construction of buildings, and makes the image in their head the reality. Architects create the overall look of buildings and other structures, but the design of a building involves far more than its appearance. This work has special responsibilities, communicating with clients and business owners to understand the requirements, designing, engineering, and supervising.

The software architecture of a system is the set of structures needed to reason about the system, which comprises software elements, relations among them, and properties of both. A software architect is a software development expert who makes high-level design choices and tries to enforce technical standards, including software coding standards, tools, and platforms.

I would say a software architect is a person who endeavors to solve a business or technical problem with the means of technology. Many people perform architectural activities, such as engineers when they are trying to come up with a solution for a specific issue. It maybe low-level architecture, but it’s still architecture. Engineers just mostly focus on how to implement the solution, yet architects focus on how to solve the problem.

Who are the stakeholders? A stakeholder is either an individual, group, or organization who is affected by the project. They can be within the team or outside the project i.e customers, clients, and users, or sponsoring the project.

Stakeholders are the people for whom we build the systems.

A key part of your role as an architect is knowing how to work with stakeholders in order to meet their requirements. I would say that this is a time-consuming process. There is often a misunderstanding of requirements, so architects meet with stakeholders not just once, but several times during requirement gathering and understand their wishes.

There are views and viewpoints, which are defined in slightly different ways in different places:

An architectural view — the representation of the architecture how he approaches the concerns held by stakeholder(s) from one or more appearances

A viewpoint — the collection of patterns and templates for building a view. Viewpoints consist of the proven architectural knowledge to guide the creation of architecture, described in a particular set of views (each view being the result of applying the guidance in a particular viewpoint).
Seven Questions You Can Ask To Prevent Overengineering
By: Mark Snyder
Tags: Engineering Mangement, Software Architecture, Product Management, Software Engineering, Software Development

Photo By Robert Bye on Unsplash

We all do it. I’ve looked back at something that took me weeks to build and said to myself, “Wow that could have been far more simple.”

I blame it on brain “modes”. When we put our brain into solutioning mode — we forget the problem and begin constructing a solution we can take pride in. I suspect it has something to do with creativity. It’s not limited to software development either — I credit overengineering for that really complex change management process or that 200 page employee handbook you may have been asked to read.

In the end there is far more value in a simple solution to a well defined problem than a sophisticated solution for a variety of possibly non existent ones. So how do we get there?

First break down a technical design into capabilities:

Take that diagram the team has been working on and extract all of the cool capabilities it provides. For example:

- Table A,B,C allow us to have dynamic tags for each directory entry.

- Method X on the code interface returns a description of what this implementation does.

- This service allows other applications to utilize this data set.

Now ask these 7 questions for each capability:

1) Has anyone asked for it. (No doesn’t necessarily mean you shouldn’t do it — but it should be considered).

2) Can we create one or more examples of why someone or something would need to utilize this capability (or you could consider asking — what problem does this solve?)

3) What is the likelihood this capability will be utilized in the next 180 days?

4) How hard will it be to implement this feature later if we decide to wait?

5) If we don’t do this how will it prevent us from achieving our current goal or objective?

6) If we don’t do this how will it impact us or our customers in the next 365 days?

7) Can we simplify by breaking the capability down into smaller pieces?

Understand that the intent here is to create a conversation.

There is a certain finesse required when asking these types of questions — especially if team members are invested in the design. Make it clear that the goal is to properly evaluate the advantages of the design so that all can understand the benefits — while making good decisions on what should and should not be included in the current effort.
DDD Walkthrough #01 — What Is That
By: Guilherme De Lima Barros
Tags: Software Architecture, Clean Code, Domain Driven Design, Software Engineering, Software Development

This is the first article in a series that will bring an insight into DDD and its main characteristics is make it easier to read. I will separate each principle into a different article, the subject is dense and this can facilitate reading in a modular way or if you have interest only in a specific part.

“Coding is war, to win you need a strategy.” Robert Laszczak

Everything we will study in these articles is related to the first D, domain, so everything is about listening, discussing and comprending the bussiness domain.

DDD is not a techonology, a software development methodology, and more important NOT a silver bullet. For example if you have a project where the business rule is not complex, you will probably not enjoy the benefits of DDD.

To be clear: “DDD is an approach to building software with a focus on the domain”.

In the next article we gonna talk about Ubiquitous Language.

Search for: DDD Walktrough 02# — Ubiquitous Language
What Architects are Not
By: O'Reilly Media
Tags: It Architect, Software Architect, It Architecture, Software Architecture

What Architects are Not

Editor’s Note: In order to describe something properly, it’s often easier to start off with what that something isn’t. In this excerpt from The Software Architect Elevator, Gregor Hohpe, Enterprise Strategist for AWS, reviews some of the roles that are often misattributed to software architects. We’d love to hear from you about what you think about this piece.

Sometimes, it’s easier to describe what something isn’t rather than trying to come up with an exact definition of what it is. In the case of architects, exaggerated expectations can paint a picture of someone who solves intermittent performance problems in the morning and then transforms the enterprise culture in the afternoon. This leads to a scenario in which architects are pulled into several roles that clearly miss the purpose of being an architect:

Senior developer

Developers often feel they need to become an architect as the next step in their career (and their pay grade).However, becoming an architect and a superstar engineer are two different career paths, with neither being superior to the other. Architects tend to have a broader scope, including organizational and strategic aspects, whereas engineers tend to specialize and deliver running software. Mature IT organizations understand this and offer parallel career paths.

Firefighter

Many managers expect architects to be able to troubleshoot and solve any crisis based on their broad understanding of the current system landscape. Architects shouldn’t ignore production issues, because they provide valuable feedback into possible architectural weaknesses. But an architect that runs from one fire drill to the next won’t have time to think about architecture. Architecture isn’t operations.

Project manager

Architects must be able to juggle many distinct, but interrelated topics. Their decisions also take into account — and affect — project time lines, staffing, and required skill sets. As a result,upper management often comes to rely on architects for project information, especially if the project manager is busy filling out status report templates. This Is a slippery slope for an architect because it’s valuable work, but it distracts from the architect’s main responsibility.

Scientist

Architects need to sport a sharp intellect and must be able to think in models and systems, but the decisions they make impact real business projects. Hence, many organizations separate the role of the chief architect from that of a chief scientist. Personally, I prefer the title chief engineer to highlight that architects produce more than paper. Lastly, although scientists may get their papers published by making things sound complex and difficult to understand, an architect’s job is the inverse: making complex topics easy to digest.
Architecture & Structure
By: Maya Alexandera
Tags: Software Development, Uml, Software Architecture

left: 3D rendering of a final garment, right: a zero-waste pattern for the same garment.

patternmaker: noun A person, machine, or software program that makes patterns, as for sewing, carpentry, or industrial machinery.

Patternmakers have a combination of engineering and design skills. They need to be able to understand what the designer wants and translate that into the lines of a pattern that will cause the garment to fit correctly. Patternmaking is taught in conjunction with fashion design education, as it is vital for designers to understand the apparel development process.

An analogy I used to describe my previous profession was to liken it to a structural engineer for clothing — kind of like an architect, building the objects we live in. Except rather than designing the buildings a patternmaker designs the clothing.

Knowing very little about software architecture with the exception of its likeness to patternmaking I recently decided to dig a little deeper and to get a little more curious by asking, ‘What is software architecture?’.

Here are a few things I learned in my exploration:

The software architecture of a system is about laying out and describing the organization or structure of the system and its behaviors.

It is the definition/identification of high-level structures of a software system and the discipline of creating such structures and systems.

The defined structures are software elements and their relationships and properties.

It defines the blueprint for the system and the developing project, defining the tasks necessary to be executed by the design teams.

All of these descriptions about software architecture immediately sounded familiar and wanted to learn more.

There are several methods that can define a system’s software architecture.

UML (Unified Modelling Language) — UML is an object-oriented solution used in software modeling and design.

— UML is an object-oriented solution used in software modeling and design. Architecture View Model (4+1 view model) — The architecture view model represents the functional and non-functional requirements of the software application.

— The architecture view model represents the functional and non-functional requirements of the software application. ADL(Architecture Description Language) — ADL defines the software architecture formally and semantically.

Software Architecture Models

There are three model types that can help build out the architecture categorized by purpose — structural, dynamic procedural, and deployment.
A Quick Guide to the C4 Architecture Model
By: Narmin Jamalova
Tags: Software Architecture, Technology, Software Development, Business, Big Data

Level 1 of the C4 model is the Context diagram.

At this stage, your software is depicted as a box in the center of the diagram that has interactions with some specific users and/or other systems. Technical details are hidden away so that a clear message of what the system does and how it interacts with the “outside world” can be sent to non-technical people.

Although it is the simplest of all diagrams, it is the most crucial one at the same time. Often, people making decisions on whether to proceed with a given project or not and how much money/how many resources to allocate to it are top-level executives/managers who need not know the intricacies of technical implementation. All they need is a clear understanding of the system and its benefits or risks.

Click on the underlined word in this section to see a sample diagram.
UML Diagrams: The Common Tongue
By: Gene Zeiniss
Tags: Software Architecture, Uml, Class Diagram, Oop, Programming

Briefly about UML

UML (Unified Modeling Language) is a common software engineering modeling language that is used to solve a wide variety of problems. It’s a “the Common Tongue” of Westeros, for Game of Thrones fans. It helps you specify, visualize, and document models of software systems, including their structure and design, before coding (with an emphasis on “before”). As the old proverb says: “The carpenter measures twice and cuts once”.

There are several types of UML diagrams and each one of them serves a different purpose. The two most broad categories that encompass all other types are Structural and Behavioral diagrams.

Structural (or Static) diagram visualizes the system’s static structure through objects, attributes, operations, and relationships. I have a cat, Lola. She has some stuff, such as a food bowl, claw sharpener, and the poop-house. So, the static aspects of Lola encompass the existence of her stuff. By the way, Lola herself will be described as an object (from an object-oriented view, right?).

The Structural diagrams are: Class Diagram, Object Diagram, Component Diagram, Composite Structure Diagram, Package Diagram, Deployment Diagram, and Profile Diagram.

Behavioral (or Dynamic) diagrams are used to visualize the dynamic aspects of a system. The Behavioral category includes a few general types of behavior, specifically the Use Case Diagram, Activity Diagram, and State Machine Diagram; and types that represent the different aspects of interaction (aka “Interaction Diagrams”) — Sequence Diagram, Communication Diagram, Timing Diagram, and Interaction Overview Diagram.

In other words, it shows how the system interacts with external entities and users, how it responds to input or events, and what constraints it operates under. Just an example of an interaction between me and my cat. Lola hysterically meows. It triggers me to put food in her bowl. She eats while keeping the “thank hers”.

Not all of the 14 different types of UML diagrams are used regularly when documenting systems and/or architectures. I’m about to write about the most useful diagrams, in my humble opinion, and will start the series with Class Diagrams.
What is a Software Architecture ?
By: Abhishek Singh
Tags: Architectural Design, Software Architecture, Sofware, Software Development, Architecture

The below post is rough dump information acquired and things that I want to understand. So have kept less focus on the structure and kept information breif.

The question in itself has mulitple facets to it.

Follow up questions :

What exactly are the expectations for an architect ?

Is there any set of defined scope where the architect role restricts ?

What skills are necessary for an architect ?

According to the standard definition:

The architecture of a software system is its organization or structure of significant components interacting through interfaces, those components being composed successively smaller components and interfaces

Software Architect has given requirements and time and needs to define the scope of the system. Architect should have knowledege of the solution and organizational understanding to form a view over the end solution of a given problem.

Architect must also take into account:

1. Auditability

2. Performance

3. Security

4. Data

5. Legality

6. Scalability
2020年 微服務技術現況調查
By: Jonathan Chen
Tags: Software Architecture, Api Gateway, Multi Cloud, Hybrid Cloud, Microservices

Learn more. Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Make Medium yours. Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore
Kislay’s Newsletter #18
By: Kislay Verma
Tags: Software Architecture, Product Thinking, Data Engineering, DevOps, Newsletter

Hi Folks,

The eighteenth edition of my weekly newsletter is out! Check it out!

This week on the blog, I wrote about what feature toggles are and how we can use them to make code changes faster and safer to deploy.

From the internet, Google’s RCA on the recent outage, Kyle Evans on Product thinking over Project thinking, Kousik Nath’s great series on understanding the Raft protocol and distributed consensus, and an overview of architectures for modern data platforms from the Andreesen-Horowitz blog.

If you like reading about software engineering, organization design, and the occasional book review, you should subscribe to receive the next editions of this newsletter. Check out the archive and sign up.

If you like what you find, bring your friends and let’s talk software and teams! Drop me a line if you have any feedback about the newsletter or the stuff shared in it.

Cheers!

Kislay
What’s Company Culture?
By: Adam Zasada
Tags: Operations, Software Architecture, Product, Company Culture, Strategy

“Fear is like fire — if you let it control you, it’ll burn you up … but if you control it, it’ll make you red hot” — Mickey to Rocky in Rocky V

Being controllable as a manager, CEO or a strategic thinker is the ultimate way to create culture.

By ensuring trust in other people’s ideas you create a culture where leaders and C-level executives envision strategy and products. Then they pass those ideas on to lower layer managers and the whole organization. Those lower level managers need to synthesize their knowledge and envision a more defined version of the product or a service. Then they pass their knowledge further to yet lower level managers who further enrich the concept and add layers of compexity. This complexity is necessary to avoid blunt concepts which may be too rigorously implemented therefore limiting growth of concepts on all levels of organization.

At any point of concepts and strategy’s drip towards implementation level employees any ideas, suggestions and decisions which may be strategic should be informed up-towards managers to ensure alignment between teams and avoidance of development of conflicting technologies.

Creating synergies is crucial to create a product which is competitive on scope and cost levels it is also crucial for essential operations.

Concepts created at any levels define a product which is created and envisioned by all levels of the organization in a structure where lower /regional / operational managers inform C-level executives of opportunities and make decisions themselves due to higher ability to define what is the correct strategic decision due to higher knowledge in a given aspect or field. Sometimes decisions made on lower levels may in fact change knowledge of C-level executives to change the strategy once new information is available.

The whole company is informed of C-level executives and strategic thinkers’ ideas of what it means to create the product or a service and what the product or service is but they dont inform them how to do it. Finally, concepts which enrich original intention of C-level executives close the knowledge gap as Stephen Bungay explained in his book “The Art of Action..”. As well as the effects gap which is the misalignment of initial concept with actual outcome.

In the end it is board members and C-level executives who must be most flexible in terms of how the product or a service will be implemented and the most vigorous in ensuring the right strategy and vision for the product..

To be continued..
Architecting a scalable and high available quotation system
By: Santosh Yadav
Tags: Software Architecture, AWS, High Availability, Scalability, Tech Stories

As an architect, you would come across to build a scalable and high available system by using cloud services (mainly AWS). You are assigned to a team whose objective is to create/manage insurance policy quotation in B2C model.

You can use pen & paper or online tools to draw diagrams.

You got to know that a customer or a care agent can be the user of the system. The users can interact with the system via web application or mobile app. So, your diagram has two users and UI (web/mobile).

Your objective is to create a quotation system. So, you need a quotation service which can accept address changes and create quotes and then store in a database table. Now your diagram has a relation between UI, quotation service and quotation database.

To make it secure, you need to have an authentication service which can verify the user with its credentials and generated token to make requests to other endpoints. Auth service will have users details in a database table mainly to deal with user profile and hash passwords.

Now comes a fun part. Where you will store the address of a user. Is it a user database or quotation database? You would anyway store the address in a quotation database, so we can store it there. But no. You want to display the current address on users’ profile page and you should not query the quotation database for it (that is not the job quotation database). So, you would need to create an endpoint in auth service to retrieve the address of the user from the user database.

The updateAddress endpoint will store the address details. You would need the same data to post to createQuote endpoint of quotation service. You should know the frequency of request on the UI. It can make you change the decision. If there is heavy load on quotation service then UI can be impacted.

Let’s make UI and auth service to be free after their actions. Quotation service needs to handle the load on its own. So, we need to leverage the auto scaling feature of AWS ECS and AWS SQS to get the work done. AWS ECS will handle the load based on your configuration. The updateAddress endpoint will push a message with id or address to a SQS queue. The quotation service will have to listen to the SQS queue and read the messages to create quotes.

Quotation System Architecture Design

Now, we need to notify users via Email and push notification on the UI after a quotation is generated. You can use socket.io and AWS SNS.

Create a subscriber in SNS and its work will be to send email.

You need to create a notification service that will be running on socket.io and pulling data from a queue (quotation service will push the message in that queue to notify the user). UI need to change the code to include socket.io library to listen to the notification service.

And now you can ask your team to create stories and start coding.

This is a re-post of my original post on blogspot — https://santosh-yadaav.blogspot.com/2020/12/architecting-scalable-and-high.html
From Model to Code — Zoom Out. This is the third and last blog from…
By: Sara Torrey
Tags: Software Architecture, Software, Ddd, Domain Driven Design, Event Sourcing

This is the third and last blog from our blog series From Model to Code. In this blog Ivan and zoom out to talk more about the architectural structure and the designing process of creating software systems. We discuss the domain model, subdomains, bounded context, and bounded context mapping.

We talk further about subdomains. We define what the important pieces of each subdomain can be: core, supporting, and generic systems. We also covered how one system can change to another in the future, when the need arises. The importance of defining these systems as upstream and downstream are explained in this article as well, which leads to our last point of discussion, “Context Mapping.” In this part we talk about location transparency, and anti-corruption layer briefly. We also discuss briefly how Axon Server supports bounded contexts.

For the complete blog, please visit here.

Authors: Sara Torrey & Ivan Dugalic
About Scaling an Application
By: Priidu Kull
Tags: Scaling, Software Architecture

Work towards having a proper data structure

Say that you have a user_profile table, but this table does not include user status. So to get user status, you need to query the user_actions table to see what was the last status that the user assigned to himself. That’s not a proper data structure and it will make your queries slow.

What is needed to make this work? It seems to me that there are two strategies for achieving solid data structures.

Try to get it right from the start Have a team that is capable of refactoring the DB as they learn more about the problem domain

My preference goes to option number two. For two reasons:

a) You are never going to get it right all the way, so you are still going to need to change the database structure at some point (or live with a suboptimal DB structure)

b) When you have the confidence that you can change it later, you can start off with the simplest thing that would work and leave the decisions about how to scale to be made in the future when you know more about the requirements of your system.

c) The longer you put off refactoring the DB, the more painful it is going to be.

Pros:

When your data structure is good, then writing application code on top of it becomes really easy. When your team is used to proactively changing DB structure, they are going to be equipped to solve problems when the DB performance really hits the brick wall.

Cons: As a short term fix, writing code to work around bad data structure might seem like a more lucrative option.

Limitations: Eventually there will be a table that has so many rows and so many reads/writes that you still need to go beyond having a good data structure to keep it performant.
Tech round up, Dec 2020
By: Gururaj Laxmayya
Tags: Technology Trends, Software Design, Software Architecture

Curated articles on software architecture and design published recently,

As Software Engineers, we are part of a very fast changing ecosystem where something new keeps happening almost everyday in some part of the world.

Lots of Brilliant Engineers keep solving problems at their work place with interesting solutions day in and day out and keep sharing their experiences and knowledge with the world inspiring the fellow Engineers.

Through these blogs, I am trying to capture the interesting articles I have come across in a month or so and share it here (doesnt mean the blogs were published in the same month). This serves multiple purposes, 1) It forces me to summarise the blogs I read in my own language which reinforces what I have learnt from them. 2) This ends up becoming a reading log for me to comeback and review later on. 3) Last, but not least, I hope it serves as a good place to look at interesting articles in one place for other readers.
微服務架構的演進故事
By: Jonathan Chen
Tags: Multi Cloud, Hybrid Cloud, Microservices, Software Architecture

Learn more. Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Make Medium yours. Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore
How to architect a system that scales horizontally
By: Vivek Suriyamoorthy
Tags: Scaling, Software Architecture, Distributed Cache, Horizontal Scaling, Distributed Systems

Learn more. Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Make Medium yours. Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore
Why choose Horizontal Scaling over Vertical Scaling?
By: Vivek Suriyamoorthy
Tags: Scaling, Startup, Software Architecture

For startups — Horizontal scaling has higher ROI than vertical scaling✔️

It is always a good idea to build your architecture that is compatible with horizontal scaling — even if you are going for vertical scaling✔️

Building architecture compatible with horizontal scaling is quicker than extracting the last bit of computing power/memory in a single server✔️

Horizontal scaling will save the day when the team is working hard fixing a hard performance problem✔️
Moving from a VPS to serverless
By: Amarjeet Rai
Tags: Software Architecture, Front End Development, Cloud, Software Development, Gcp

Photo by Alex Vasey on Unsplash

Previously used for hosting university and side projects, sonurai.com is now hosting Bing wallpapers which are updated daily and the code is fully open source.

The legacy version was all hosted on a single $5 per month VPS box running Centos. This contained Nginx, MySQL, PHP and it was built using the Symfony framework. Images were hosted in the local filesystem. Updates had to be manually installed, firewall rules and CRON too.

Now it is fully hosted in the cloud and uses “serverless” for bits. It costs around $4 per month depending on usage, but requires zero management. This price is attained by using Google Cloud Platform’s (GCP) free tier, free hosting from Vercel and probably some aspect of Cloudflare’s CDN.

Frontend

The frontend is built using Next.js and hosted on Vercel. It has a simple design created using the Bootstrap CSS framework.

Image optimisation happens automatically. This means web browsers get images optimised for their screen size and they only load images when in or near view. Resulting in faster loading of images and a quicker first contentful paint.

Backend

The backend is fully hosted on GCP in the same US region to save costs. The majority of the traffic comes from the US so it is hosted there to reduce latency.

Cloud Firest0re is the NoSQL database which encompasses the wallpaper entries.

The API is written in GoLang and gets deployed as a container automatically on Cloud Run with a push to the main branch.

A GoLang function which updates the Bing wallpapers is hosted on Cloud Functions (GCP’s serverless product). It listens to a Cloud Pub/Sub topic which receives a message daily from Cloud Scheduler (CRON service). HTTP caching headers are set according to this time, so clients receive the latest wallpapers.

Images are stored in a muti-region Google Cloud Storage bucket with a subdomain set. An index.html file redirects to the top-level domain.

Previously published on https://arai.dev/
There is no bad or good architecture. There is only context.
Tags: Architectural Design, Software Architecture, Software, Software Engineering, Software Development

How much time you have to deliver ?

If you are already on the market and pressed by the concurrents chances are you don’t have much time. In this case answers are pretty simple reuse what you have and try to optimize.

Rewrite common code in libraries so it will help you speed up the process. Automate repetitive tasks so you can avoid loosing time. And do not lose time on searching something different at least you don’t have a problem with what you have today.

Moving from Spring Boot 1.5 to 2.0 for example it can be huge task but you really need it? If your app is doing well and the response time is on your accepted range, trust me you don’t need it now.

Security is only reason you should feel the pain of update major versions.

But if you are at the start of new project and have some time to test different frameworks than enjoy the research.

How many people will work on it?

If you are working solo and you don’t plan to grow for now until your app will be able to support the cost of other people, chances are you don’t need distributed systems or automation.

Just write it and deliver it. Maybe it will not work your idea and you shouldn’t wait an year to test it.

But if you are working with hundreds of teams and people chances are processes, automation, and distribution of the system which allow isolation of team work is your way to heaven.
The Ultimate Guide to Infrastructure Optimization on Cloud
By: Daffodil Software
Tags: DevOps, Software Architecture

Infrastructure services consume a large part of IT budgets. It is therefore imperative for organizations to focus on cost and productivity of infra services to best utilize them.

Sourcing, procurement, and vendor management leaders are continuously striving to optimize the infrastructure in order to reduce costs, manage resources & their availability. The following segment discusses different ways an infrastructure for an application can be optimized on the cloud.

Solution 1: Optimization of Existing Infra on Cloud

Moving an existing infrastructure on the cloud have a number of benefits. For example:

An infra on the cloud can auto-scale to support fluctuating workloads.

It allows organizations to choose public, private, or hybrid storage offerings according to security or other business considerations.

Cloud infra enables organizations to have a level of control over the infra with as-a-service options (which generally includes Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS)).

A number of pre-built tools and features can be accessed to build a solution for optimizing the infra.

With so many cost-saving and productivity-improving advantages of the cloud, we always recommend our clients to move their existing on-premise infra on the cloud for optimization.

For this, we start with an assessment of existing resource utilization. This is either a manual process or done via tools in order to figure out the “under-utilized” and “over-utilized” resources.

Action Items:

Solution 2: Architectural Changes

Software architecture defines and structures a solution in a way that it meets all the technical, operational and business requirements. From monolithic to SOA to microservices, software architectures have evolved over time.

Depending upon the application type, its scalability, features & functionalities, a relevant architecture can be adopted. Here is a guide for you to choose between monolithic and microservices architecture for eCommerce application development.

Action Items:

Developing applications with serverless architecture helps to curb operational costs, requires no-upfront capacity, and requires no environment configuration. To understand this better, take the example of AWS Lambda. It’s a compute service that allows running the code without provisioning or managing servers. This pay-as-you-go service by AWS executes the code only when needed and scales as the demand strikes (from a few requests per day to thousands per second).

Infrastructure Optimization on Cloud: Getting Started

If optimizing an existing infra or designing a new one is on your mind, then you can get started with expert technical guidance. Our cloud consultation service will connect you to our cloud expert Gaurav Sharma, who will guide you through the best practices for infrastructure optimization for your application.
Architects have more architectural style in their life rather than Software
By: Devaraj Chennur
Tags: Architectural Styles, Architectural Patterns, Software Architecture

Architects have more architectural style in their life rather than Software

As a architect when first comes to mind is technology stack. Yes obvious the kind of knowledge having is very important. Do need certificate for the designation? not really. In fact any profile does need certificate if you proved that you are eligible to that profile, certificates are for beginner who does not know the tool or technology knowledge, at that point of time need to certify somebody that this candidate is eligible to handle the task.

Architecture of software keeps on changing the day by day like java, initially it was system language later it evolved to application language, after enhanced with functional programming now it is modular language, architect of any software should have very through info about the industry what's going on around the system. Among them system architect expectation performance is very high knowing the system functioning is very sophisticated job. One should look into deep understanding of the hardware system operation procedure go through the lot of documentation, reference materials before get into the deep dive for designing but as Application architect comes to picture is some cool thing as compared to previous notably performance, availability is main issue in the enterprise architect.

“Software architects build their own hardware” as by computer scientist.
SaaS Startup Platform Build
By: Arunabh Das
Tags: Software Development, Startup, Software Engineering, Software Architecture

SaaS Startup Platform Build

Step 1 — HowTo build an Open Source SaaS Startup Platform from the ground up Arunabh Das ·Dec 9, 2020

This is the first step in a hands-on coding series titled ‘How to build an Open Source SaaS Startup Platform` from the ground up.
Awesome Architecture Descriptions and Pattern Languages
By: Doc Soc
Tags: Software Architecture, Documentation, Design Patterns, Enterprise Application, API

Awesome Architecture Descriptions and Pattern Languages

This post points you at valuable templates for documenting software architectures as well as a pattern languages that can support their creation.

Architecture Description Formats

When it comes to documenting software architecture requirements and designs, some of my most frequently visited resources are:

The twelve-section arc42 template “takes the pain out of documentation” and is accompanied by many hints. ISO/IEC/IEE 42010:2011, defining what frameworks are and making the case for capturing decision rationale. There is a template to ease the creation of 42010-compliant architecture descriptions[1]. OpenUP seems to have lost weight in recent years[2]. But it still is a good place to look for guidance. For instance, try the “Architecture Notebook” under “Guidance” and then “Checklists”. The SEI assets run under Views and Beyond and include the book “Documenting Software Architectures” by Felix Bachmann, Len Bass, Paul Clements et al. (disclaimer: my own) Design Practice Repository (DPR) is an open source repository collecting “mighty method”[3] elements such as user stories, SMART non-functional requirements and Architecture Decision Records (ADRs).

My blog posts (hopefully) have something to offer too:

Just in case you are concerned of the effort: in “Using Patterns to Capture Architectural Decisions”, Neil Harrison, Uwe Zdun and Paris Avgeriou teach us that patterns can cut it. So let’s compile links to some pattern languages now.

Pattern Languages

I only list some that make content summaries available online:

This list is certainly incomplete; please merely view it as my personal entrance door to the patterns world. I apply and teach all of the above, but also others. Gregor Hohpe provides a rather comprehensive collection of reading recommendations for architects, organized into four book shelves.

Wrap Up

This post collected pointers to five architecture description frameworks, standards, templates, guidelines, checklists. It also suggested some pattern languages, available online, that can get you started with architecture design.

Which notations and patterns do you use to solve domain-specific and general design issues? How do you document the design decision outcomes? Tell me!

– Olaf (a.k.a. ZIO)

PS: This story is also available on The Concerned Architect blog

© Olaf Zimmermann, 2020. All rights reserved.

Notes

[1] created by R. Hilliard, one of the authors of the standard

[2 ]where did the Software Architecture Document (SAD) go?

[3] quoting M. Keeling at ECSA 2020 here
A Sparrow Falls
By: Akhtar Mehmood
Tags: Erotica, Poems On Medium, Love, Illumination, Poetry

A Sparrow Falls

Photo by Artem Labunsky on Unsplash

The man who climbed up the stairs to your room last night,

Was not the same who descended this morning.

With your kisses sweet, the skeptic will now,

Drink poison but will never stop defending your love for him

You played the tune that had lit up every cell in his body.

Which was like a suitcase on an airport carousel, without a destination tag.

And now he floats above the clouds, for he has seen.

The folly of being the eyes of a vulture, for dead meat.

The folly of never knowing the thirst of true Love and drinking wine,

Made from the rotten apples of lust and greed.

For him, the gyrating wheel of fate has stopped spinning now.

As he is tethered to the joys of earthy love of a woman.