algonote(en)

There's More Than One Way To Do It

Using RDBMS & Rails is rational selection for zero to one development, especially in SaaS era

How the architecture has changed over the trend of products

Introduction

There are several architectural patterns that we can choose in web development.

The server structure is categorized by monolithic or microservices. Tthe database is stored in-house or outsourced to an external mBaaS. You might carve out the authentication part to OAuth, or use an external service only for the full-text search part.

Sometimes it is a good idea to use a new technology A, but after a while, that technology may be considered obsolete.

I have noticed that the trend of such technology is often influenced by the trend of the product that has expanded business opportunities at that time. It can be well sorted by server/client ratio, so I will summarize.

System of Record and System of Engagement

The slide by Mr. Ito Naoya, CTO of Ikkyu, is very well organized.

The summary of presentation is

  • Systems can be divided into two categories: System of Record and System of Engagement
  • System of Record is required in the start-up phase and System of Engagement is required in the maturity phase.

System of Record is the back-end oriented business systems. It requires a deep understanding of the system, and in the start-up phase, getting products on the shelves is necessary for not dying.

System of Engagement is front-end oriented development. User-friendliness is important. When most features were implemented in that web service genre, the development for UX is more important.

This is just a tendency. Nobody can categorize the system as only one side. It is often said that there is less competition in Japan than in China and other countries, but even so, there are several competitors for every service these days.

There may be some blood-curdling developments where both System of Record and System of Engagement are required at a high level in the initial zero to one stage.

Mobile App Development is System of Engagement

By the way, IT company development is not limited to web services. The trend of products is shifting from year to year due to new hardware and technological breakthroughs.

I've added a few things to a document I wrote about DX.

.

I think the most distinctive feature is the advent of smartphones. I think the development of mobile applications is more of a System of Engagement.

Like Mercari's vs Yahoo Japan, by turning an already existing genre into an mobile app, we were able to build a competition advantage.

I think external data stores like Firebase were an attractive option to reduce back-end development to focus on client-oriented development that requries System of Engagement.

SaaS for company is (rather) System of Record

On the other hand, I think the biggest product trend in the past few years is SaaS. Since the global situation has become unstable, there's recession. However the business model is easy to measure and has a promising future.

SaaS is just a business model, so there are many different services, but the majority is the service for company. SaaS is categorized by Horizontal SaaS or Vertical SaaS depending on whether or not you want to focus on a specific industry.

SaaS is more of a System of Record since it is internal system. SaaS for architecture requires knowledge of architecture, and SaaS for real estate requires knowledge of real estate.

And here is the key point. Although there are companies that provide company smartphones to employees, the majority of company only provide only PCs. When it comes to the development for company, supporting smartphones is not always required.

In other words, my hypothesis is that what was individual-oriented and client-oriented when smartphones first appeared has become company-oriented and server-oriented in the SaaS era. Device support is not the only competitive advantage.

Server or Client

Let's look at the product trends described above in terms of whether they are server-oritend or client-oriented.

Is social game development server-oriented or client-oriented? It seems that social games use Web API communication that classic console games did not use. I would say it is about 50-50.

How about IoT development? I think it was more for applications that plainly transmit data. The most important thing is to have hardware at the edge, which is client-oriented. Backend was often mBaaS.

Machine learning is important at the edge for things like automated driving, but for things like personalization in web development, it is important to be able to aggregate and view all the user's data at once, so I think the emphasis was on the server.

What about VR development? Synchronization is important in the metaverse, but when we look at VR functions alone, I think that optics is important and client-oriented.

I think that the product trends in the IT industry are constantly changing over time. Server-oriented or client-oriented, System of Record or System of Engagement is not fixed. In the age of AR glasses, the emphasis may shift back to System of Engagement.

Is Rails end in SaaS era?

In this way, SaaS is often more System of Record oriented, and the trend in the SaaS era seems to have been to focus on the backend. It requires classic MVC frameworks due to the competitive advantage of a deep understanding of the business.

For systems that do not require complexity, such as mobile apps and IoT development, using external data store such as Frebase is more reasonable.

On the other hand, it is known that the zero-to-one web development is the System of Record. For SaaS, the System of Record is still necessary in maturity phase. It is reasonable to choose RDBMS and MVC frameworks for SaaS.

MVC frameworks such as Rails, Laravel, and Django are often considered dead, but their importance was reaffirmed in the SaaS era.

Focus backend leads organization architecture difficulties

This is directly reflected in the difficulty of organizational management.

For example, there may have been a development department of 20 people, and in the days of mobile app development, the app and back-end may have been separated at a ratio of 10:10.

What about when machine learning was dominant in the business? It might have been an 8:8:4 split between apps, web development, and machine learning, for example.

The number of companies that think about modular monolith and team topology is increasing. It may come from the fact that there are more and more companies that are doing only web development with 20 people.

Is SPA competitive advantage?

Since we have mainly discussed the backend, let's talk about the web frontend.

What is the main evolution in the Web front in the last 10 years? I think that is SPA like React and Vue.js. As with mobile apps, the UX improvements by SPAs are a one advantage.

On the other hand, I feel that the various frameworks have been consolidated into React and Vue.js. Although there has been evolution such as TypeScript and React Hooks, it has been almost 10 years since React was first released in 2013.

I looked back at IP precedents, and in the Cybozu case, where there were similarities in HTML, copyright infringement was not approved. The improvement of UX by SPA is one advantage, but based on the past precedents, it is difficult to win a court case even if it is copied.

Looking at the funding situation in China, CAD software that runs in the browser is emerging. Most companies are gradually getting the hang of the state management. The performance-demanding products using WebAssembly will become an advantage in the future.

Summary

The summary is below.

  • Systems can be divided into two categories: System of Record and System of Engagement.
  • App development is a System of Engagement
  • SaaS development is (rather) System of Record
  • Server-oriented or client-oriented has trend over time.
  • The number of companies that consider team topology has increased because they have shifted their focus entirely to web development.
  • SPA is one advantage, but internal systems may be fragile to copy