N years ago, Xiao Ming entered a start-up company with the identity of a rookie
I (Xiao Ming) thought the company was like this… (Collect this article, fine taste really sweet)
But the truth is…
When I walked in, my department got rid of the head of the department, and me, and me, and me… And my boss
So that’s how I started my career as a programmer… And began my journey of helpless and painful technology…
The company is to do e-commerce website, because I was a rookie, so I received the first task is to make a web page, then I learned:
-
HTML: Used to lay out web pages
-
CSS: Used to beautify web pages
-
JavaScript: Used to do click jump, window pop-up
But, one day, my boss told me that real development requires some development frameworks and components to develop quickly, so I learned:
-
JQUERY: Greatly simplifies JavaScript programming
-
Bootstrap. js: Can be directly applied to its beautiful style for rapid development
After working overtime, the web page finally completed, I excitedly told the boss I finished, the boss took a look, cold said, browser compatible do not?
So I opened my work in Internet Explorer and saw…
Why is that…
It doesn’t matter, come on, next I download:
-
Google Chrome
-
Firefox
-
6, 7,8,9 browser
-
360 Security Browser
-
360 ultra speed browser
It was a hard struggle, and I won, and won my first compliment from the boss!
The next day, the new task came, the boss said, now this page is static, need to change to dynamic…
Then, I learned:
-
Ajax, used for front-end tunings to back-end interfaces
-
Json, a format for data returned by a back-end interface
-
Spring: Lightweight rapid development framework
-
Spring MVC: A framework for rapidly developing Web applications
-
FreeMarker: A server side template engine
-
HttpClient: A Java implementation of the Http request client
-
Mybatis: an excellent persistence layer framework
-
Mysql: one of the most popular database software in China
-
Maven: a project management tool for building and dependency management of Java projects
-
Tomcat: The most used Servlet container that can be used to receive browser requests
The focus of work and life in the next few months will be on these technologies…
Suddenly, one day, the company came to the new, I finally not alone, then the boss told me to use some project management tools… So I learned again:
-
Git: a code version management tool
-
GitLab: A project management and code hosting platform
-
Nexus: A powerful Maven repository manager that greatly simplifies maintenance of its own internal repositories and access to external repositories
-
Zen: the first domestic open source project management software, complete coverage of the core process of project management
-
Jira: JIRA combines project management, task management, and defect management, and has been adopted by many well-known open source projects
With these management tools, the boss said, in addition to the above, I also need some automated build tools to make the development test launch smoother, so I learned:
-
Docker: An open source application container engine
-
Jenkins: An open source continuous integration (CI) tool that provides a user-friendly interface
All the technical stuff you need for an architect, packed,
Copy the url below, open the browser to download and learn
sourl.cn/mZnw7Y
A set of automated development test was set up by me, with this set of project development management tools, our small team cooperation is very happy, soon, our website’s core function development is almost
Then the boss said, in order to go online after the operation can be guaranteed, we need to give our website supporting a set of monitoring and logging system, so we build:
-
Prometheus: An open source service monitoring system and time series database
-
Grafana: An open source, full-featured metrics dashboard and graphics editor
-
Zabbix: an enterprise-level distributed open source monitoring solution
-
ElasticSearch: a real-time distributed search analysis engine
-
Kibana: a platform for efficient log searching, visualization, analysis, and more
-
LogStash: A platform for transferring, processing, managing, and searching application logs and events
-
Log4j: An open source component that controls the destination of log messages
-
Logback: Another open source logging component designed by the OG4J founders
After a period of time, the number of users of the website gradually increased. Through our monitoring system, we found that the pressure of several core applications was constantly increasing. The boss said that we should do load balancing, so I learned:
-
Nginx: a high-performance HTTP and reverse proxy Web server
-
LVS: A virtual server cluster system
-
Keepalive: A service that detects the state of the Web server
In the end, we did load balancing by using Nginx and adding several servers, but the boss continued, “Load balancing is not enough. We can cache hot items in advance, so I learned again:
-
Redis: a high-performance key-value database that complements relational databases
-
Jedis: an official Redis preferred Java client development package
-
Redisson: A common utility class that builds on NIO and provides users with distributed features
Promotion skills: systematic mastery is a skill, I was promoted to the program source forum, the knowledge point is the senior architect carefully selected, tell me what to learn, what is worth learning. Not only does it show me how to use it, but it also shows me why, so deep down, so cool! Avoid detours (I know the rest of the place, of course, but it’s all jumbled up and I miss the point).
In this way, our website access speed improved, one day, the boss said, we want to make an order status change SMS notification function, said to use message queue to do, let me do a technical selection, I learned again:
-
RabbitMQ is a high-performance, robust and scalable message queue middleware
-
Kafka is a high-throughput distributed publish-subscribe messaging system
-
RocketMQ: An open source distributed messaging system that provides low-latency, highly reliable message publishing and subscription services based on highly available distributed clustering technology
Finally, I chose Alibaba’s RocketMQ, and discussed my selection ideas with the boss, which was recognized by the boss and promoted to be the r&d team leader…
With the development of business, one day, the boss said, we need to do a reconstruction of our project, change to distributed micro-service architecture, let me learn:
-
Dubbo: Ali open source high-performance RPC call framework
-
Spring Cloud: A development framework for developers to quickly build microservices architectures
-
Zookeeper: A centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services
-
Netty: a high-performance network application framework
-
Xxl-job: a lightweight distributed task scheduling platform
-
Elastic-Job: indicates a distributed scheduling solution
Given such a heavy task, I wasted every second to learn these techniques. Finally, I told my boss that we were using Spring Cloud, and several components provided by Spring Cloud were too powerful, such as:
-
Nacos: A dynamic service discovery, configuration, and service management platform
-
Ribbon: A component that provides software load balancing algorithms on the client side
-
Feign: A more powerful and user-friendly Java HTTP client library
-
Sentinel: A highly available traffic protection component for distributed services architecture
As a result, we have been refactoring our projects into Spring Cloud for a long time, and when we finished, we had a drink…
Then, we entered the telling development period, during which I learned:
-
Agile Development: a new Internet development mode
-
Iteration: The concept of cycles in the agile development process
-
Kanban: The most important performance tool in agile development
-
DDD: A microservice split design idea
And so on development design concept…
Until one day, something happened… “, our website crashed, hurriedly, a look at the monitoring, the database pressure burst, we adjust the flow limit and other measures, temporarily relieved, after the event, the boss told us seriously, we have to sub-database sub-table, so I went to learn:
-
Mycat: a completely open source database middleware product for enterprise application development
-
ShardingSphere: An ecosystem of open source distributed database middleware solutions
After a bitter battle, the sub-library sub-table has also been fixed by us, but the boss said, is not enough, we have to do automatic expansion and contraction, so I learned:
-
Kubernetes: An open source container cluster management system from Google Cloud Platform
-
Openshift: A developer’s Paas from Red Hat
In the process I learned a few concepts:
-
ServiceMesh Architecture: Next-generation microservices architecture
-
Serverless Architecture: Used to build and run applications that do not require server administration
-
Cloud native architecture: An architecture that integrates the cloud environment and makes full use of cloud resources
Through efforts, our website has achieved automatic expansion and shrinkage, is very powerful, the development of the whole website has gradually entered a stable period…
All the technical stuff you need for an architect, packed,
Copy the url below, open the browser to download and learn
sourl.cn/mZnw7Y
This is only the first company I have worked in. I am very grateful to this company and my boss. However, I know that the outside world is big and needs me to go out, so I gave up my resignation. Then, started the journey of delivery……..