Objective
This article is mainly for those who want to engage in middleware development of the students to see:)
If you do not have this plan, then the study route of this article is not practical, but also may affect your normal work:)
What is middleware development?
With the development of domestic software industry, the size of domestic internet companies is becoming larger and more complex, with the use of a large number of middleware to improve the performance of background services. This resulted in middleware development and maintenance personnel.
Admittedly, in small companies, middleware, such as caching, MQ,RPC services, is highly likely to be maintained by business developers themselves, or entrusted to third-party cloud platform operations (paying some fees). However, if you develop more than 200 people behind the scenes, you will basically build your own middleware or infrastructure team to maintain the backend server infrastructure and middleware.
Larger companies, for a variety of reasons (performance, KPI), will develop their own middleware, referred to as self-research. This requires that the middleware team needs more people.
What qualities do middleware developers need?
Since middleware developers are needed, where do middleware developers typically recruit? What are the recruitment requirements?
Typically, a company will pick up talent from within the company when it starts to build a middleware team, or pick 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. Conversely, if you do not have the middleware development experience, want to recruit through the way into the middleware industry, then relatively, there will be some twists and turns.
Well, let's say you want to do middleware development, but you don't have middleware development experience, and your company doesn't have a middleware team to build.
How to break it?
Answer: Job-hopping. Job-hopping to another company's middleware team.
This involves the skills that a middleware team needs. Because job-hopping is sure to interview, if you interview is the middleware post, then nature, you need to prepare knowledge of the middleware.
In addition, there is a point, in this time of clear division of labor, even the middleware, there are many kinds, I here a little bit, may not be very accurate.
- Service governance middleware, such as RPC-related middleware, current-limiting fuse, link tracking, distributed Configuration center, and so on. You can find the relevant products from Springcloud. Of course, there are many excellent products in China.
- Storage middleware, such as caching, MQ, and so on, is relatively high if the storage involves a distributed (usually involved).
- A variety of proxies, whether it is a database, or Cache, or a variety of storage, usually single-machine can not carry large amounts of data, the more simple way is to use proxy proxies, so that the application transparent use of the cluster. For performance reasons, high-performance products, such as golang,c++, are often used here. Java's strength-the development efficiency, in this place weight is not big.
- A variety of distributed middleware, such as ZK, this I personally think the difficulty is larger. Distribution has always been a difficult point in software development. Especially when it comes to storage and consistency.
- Container-related, k8s,docker and so on, containerized is the trend, in fact, I do not know very well? (Listen to what the big boys say).
Back to the previous topic: what qualities does a middleware developer need?
- Language Foundation. From the Java Programmer's Point of view, the basics are usually: collections, concurrency, Jvm,netty,io, NIO (mmap,sendfile)
- Computer basics, because middleware developers often deal with the OS, computer fundamentals are also essential, such as file systems (io/disks), process threads, and memory management.
- Network Foundation, do backstage personnel, must be familiar with the network, familiar with Linux under troubleshooting network problems, familiar with epoll principle.
- Distributed knowledge, in the background of the massive data of Internet, it is necessary to distribute, CAP, paxos,raft,zab,2pc,3pc,base and so on. It is best to write implementation code based on these theories.
- Familiar with the open source implementation, even if you are a business developer and you are 100% exposed to open source projects, such as Spring, you usually need to have a deep understanding of this commonly used open source code, not only know its principles, but also understand its design. From a large point of view, you have to see the background, design and trade-offs of the entire framework, from a small perspective, you have to see the internal implementation details of the framework, there are interesting places (usually this framework will be optimized for performance).
- Understanding the industry vane, the middleware industry and business development slightly different, each version of the middleware upgrade will make the field of developers to look askance (similar to the IPhone launch), understand its characteristics, to understand the industry trends, and finally become the industry leader.
How do I become a middleware developer?
All right, that's all. What qualities do middleware developers need, naturally, and how to become middleware developers, it is self-evident.
Plainly, the above 6 points, are nut.
- For those who have already begun to work, the need for a deep accumulation of ordinary, said the harsh point, if your business development task is very heavy, you can not get the door of these content.
- For the students who are still in school, very cool, you can use the school (not only the university, as far as I know the great God, usually the middle school/elementary school began programming, but this is not necessary) in a lot of time to learn, a deal with these points of knowledge, and social strokes, if your knowledge reached the above level, then SP offer It should be taken casually:)
My focus here and those who usually do not heavy development tasks, want to engage in middleware students talk.
I assume that you are a 3-year-old Java developer, and you may be a trainee, halfway decent, training students, junior high school students, and you are not in the big factory, usually in a background to develop no more than 200 people of the start-up company, title is "Java Development engineer", and there is a programmer's dream, do not want to Get, set, do not want to crud, do not want to fill in the HTML, do not want to discuss with the product classmates, do not want to test with the students point point ... (feel like this will offend =_=| |)
You may want to switch jobs.
Then you probably need to make the following preparations:
- Consolidate Java Foundation, set source code, and source codes, JVM principle, Netty principle, IO-related (involving 0 copies of file storage), these are Java Foundation, is usually necessary.
- Distributed principle, at least know the theoretical knowledge, it is best to write a, even if the reference to open source is OK.
- Source code, Spring Mybatis Tomcat and so on, these codes are usually your first contact, and you might want to start here. RPC middleware related, Dubbo,motan,sofa, pick a bar, recommended SOFA.
- Again familiar with the familiar (familiar with the source code and design) distributed related products, assuming you are Java development, recommended Rocketmq,apollo Configuration center and so on middleware, in fact, MQ is relatively complex.
- Operating system, usually, when you study the above content, you will encounter operating system questions, encountered do not bypass, try to understand.
- Their own products, have the best, such as the public number, blog, instructional video, GitHub project and so on, in short, is to take the shot of things.
- Increase cattle friends, understand the industry vane. Perhaps you are a reserved person, but in this industry, you need to learn from the best people in the industry (see the Circle of Friends).
Conclusion
Usually after reading this article, you will have a trace of exhaustion, even with such a hint of sadness: too He is difficult!
If you have read the contents of this article and feel so easy, then turn left to Ali, or turn right into the group.
I assume you are the former. Then please respect your dream.
Here's a quote:
If you have a dream, you need to defend it. Those who do nothing want to tell you that you can't do it. If you have an ideal, you should try to achieve it. That's it.
In fact, this sentence is also for my own. With June mutual encouragement.
In the end, what I said is wrong.
Talk about middleware development