preface

This article is intended for those of you who want to get into middleware development 🙂 if you don’t, this course is not only impractical, but may interfere with your normal work 🙂

What is middleware development?

With the development of the domestic software industry, the scale of Domestic Internet companies is becoming larger and more complex, so they use a large number of middleware to improve the performance of background services. This leads to middleware developers and maintainers. Admittedly, in small companies, middleware such as caching, MQ, RPC and other services are most likely to be maintained by the business developers themselves, or to be operated (at some cost) by a third-party cloud platform. However, if there are more than 200 backend developers, they will basically form their own middleware or infrastructure team to maintain the backend server infrastructure and middleware. Larger companies, for a variety of reasons (performance, KPIs), develop their own middleware. This requires more people on the middleware team.

What qualities do middleware developers need?

Given the need for middleware developers, where do middleware developers usually come from? What are the recruitment requirements? Typically, when a company starts building a middleware team, it looks for talented people from within the company, or people who are interested in middleware. At this point, you may not have the relevant experience, but you still have the opportunity to participate in middleware development. On the other hand, if you have no experience in middleware development and want to enter the middleware industry through recruitment, there will be some twists and turns. So, let’s say you want to work in middleware development, but you have no experience in middleware development, and your company has no plans to build a middleware team. How to break through? A: Job-hopping. Moved to another company’s middleware team. This is where the skills of a middleware team come in. If you are interviewing for a middleware position, then naturally, you need to prepare the relevant knowledge of middleware. In addition, there is another point, in this era of clear division of labor, even middleware, there are many kinds of, let me break it down a little bit here, maybe not very accurate.

  • Service governance middleware, such as RPC-related middleware, fuses limiting, link tracing, distributed configuration center, etc. Of course, there are many excellent domestic products.
  • Storage middleware, such as caching, MQ, and so on, can be relatively demanding if the storage involves distribution (as it usually does).
  • A variety of proxies, whether database, Cache, or storage, usually cannot bear massive data on a single machine. A simple way is to use proxies to transparently use clusters. For performance reasons, high performance products such as goLang, C++, etc.
  • All kinds of distributed middleware, such as ZK, which I personally think is more difficult. Distribution has always been a difficult part of software development. Especially when it comes to storage and consistency.
  • Container related, K8S, Docker, etc., containerization has been the general trend, in fact, I do not understand 😀 (listen to the big guys said). Back to the previous topic: What qualities does a middleware developer need?
  • Language basics.
  • Computer basics, such as file systems (IO/ disk), process threads, and memory management, are also essential as middleware developers often work with OS.
  • Network foundation, do background personnel, must be familiar with the network, familiar with the troubleshooting of network problems under Linux, familiar with the principle of Epoll, etc.
  • Distributed knowledge, distributed knowledge is essential in the context of massive Internet data, CAP, Paxos, Raft, Zab, 2PC, 3PC, Base, etc. It is a good idea to write implementation code based on these theories.
  • Familiarize yourself with open source implementations. Even if you are a business developer, you will be working on 100% of open source projects, so you usually need to have a deep understanding of this common open source code, both in terms of how it works and in terms of its design. From a big perspective, you need to look at the context, design and trade-offs of the framework, and from a small perspective, you need to look at the internal implementation details of the framework and see what’s interesting (often these frameworks are optimized for performance).
  • Understand the industry weather vane. Middleware industry is slightly different from business development. Every version upgrade of middleware will attract the attention of developers in this field (similar to iPhone launch), understand its characteristics, and then understand the industry trend, and finally become the industry leader.

How to become a middleware developer?

Well, having said what qualities a middleware developer needs, naturally, how to become a middleware developer is self-evident. To put it bluntly, the above 6 points are hard bones.

  • For those who have already started working, it is usually a profound accumulation, and to put it bluntly, if you have a heavy business development task, you can hardly handle these contents.
  • For was at school classmate, very comfortable, you can use the school (not only refers to the university, as far as I know, the great god, and is usually secondary/primary school started programming, but this is not a must) in plenty of time to study, each one with the knowledge, and social action is different, if you reach the level of knowledge, I would like to talk with those students who are not heavy in development tasks and want to engage in middleware.

I assume that you are a PHP developer who has worked for less than 3 years, and you may be a trainee, half-way out of school, a college student, or a junior high school student. Besides, you are not in Dachang and usually work in a startup company with no more than 200 people in the background. Your title is “PHP development engineer” and you have a programmer’s dream. Don’t want to get, set, CRUD, HTML fill in the blank, don’t want to discuss with product students, and don’t want to dot…… with test students (feeling here cause offence = _ = | |) you may want to jump ship. You’ll probably need to do the following: consolidate PHP fundamentals, aggregate source code, concurrent source code, IO dependencies (when it comes to zero-copy file storage), these are all basic and usually required. Distributed principle, at least know the theoretical knowledge, it is best to write one, even if reference open source line. Source code, which is usually the first thing you get, might as well start there. RPC middleware related, Dubbo, Motan, SOFA, pick one, recommend SOFA. Familiarize yourself with (familiarity means source code and design) distributed related products. Operating systems, in general, when you’re doing this, you’re going to run into operating system questions, don’t go around them, try to figure it out. Own products, it is best to have, such as public account, blog, teaching video, GitHub project and so on, in short, is to take things. Add daniu friends, understand the industry vane. You may be reserved, but in your field, you need to learn from the best people in your field (just check your circle of friends).

conclusion

Usually after reading this article, you will feel a little tired, even a little sad: it is too difficult! I assume you are the former. Then please respect your dreams. Here’s a quote: You got a dream, you gotta protect it. People can’t do something themselves, they wanna tell you you can’t do it. If you want something, go get it. That’s all. Actually, I’m writing this to myself, too. With your mutual encouragement. In the end, what I said was wrong.