astra-sites domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131cookie-law-info domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131essential-blocks domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131rank-math domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131wp-bulk-delete domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131insert-headers-and-footers domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131add-search-to-menu domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131ultimate-blocks domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131essential-addons-for-elementor-lite domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131jetpack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131loginizer domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131rank-math domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131ultimate-addons-for-gutenberg domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131wpforms-lite domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131email-subscribers domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131shortpixel-adaptive-images domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131shortpixel-image-optimiser domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131astra domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131astra-addon domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/marayylx/techpomelo.com/wp-includes/functions.php on line 6131
The electric vehicle (EV) revolution is sweeping across the globe, driven by an urgent need to address climate change and reduce dependency on fossil fuels. In India, one company that stands at the forefront of this transformation is Ola Electric. Known for its ambitious goals and innovative approach, Ola Electric is gearing up for its much-anticipated Initial Public Offering (IPO). This event is not just a financial milestone for the company but a significant marker in India’s journey towards a sustainable future. In this comprehensive analysis, we will explore Ola Electric’s history, financials, market positioning, challenges, opportunities, and future predictions.
Ola Electric was founded in 2017 as a subsidiary of Ola Cabs, India’s leading ride-hailing service established by Bhavish Aggarwal and Ankit Bhati. The inception of Ola Electric was driven by the vision to reduce urban pollution and promote the adoption of clean energy in transportation. Initially, the company focused on providing charging solutions and battery swapping infrastructure to support the burgeoning EV market in India.
Recognizing the immense potential of the electric two-wheeler market, Ola Electric shifted its focus towards manufacturing electric scooters. This strategic pivot was complemented by significant investments in research and development, leading to the creation of high-performance, smart electric scooters that cater to the needs of the modern consumer.

Ola Electric has demonstrated impressive financial growth since its inception. As of FY 2023, the company reported a revenue of $500 million, up from $300 million in FY 2022. This growth trajectory reflects the increasing acceptance and demand for electric vehicles in India. The net profit for FY 2023 stood at $50 million, showcasing the company’s ability to not only scale but also achieve profitability in a competitive market.
The company has successfully raised over $500 million in various funding rounds from prominent investors such as SoftBank, Tiger Global, and Matrix Partners. These investments have propelled Ola Electric’s valuation to approximately $10 billion ahead of its IPO.
Ola Electric holds a significant share in the Indian electric two-wheeler market, competing with established players like Ather Energy, Bajaj Auto, and TVS Motor Company. With an annual production capacity of 10 million units from its Ola Futurefactory, the company is well-positioned to meet growing market demand.
Ola Electric Mobility is kicking off its initial public offering (IPO) for bidding today, Friday, August 2, and the three-day bidding will conclude on Tuesday, August 6. The EV maker is offering its shares in the price band of Rs 72-76 apiece, where investors can apply for a minimum of 195 shares and its multiples thereafter. Bengaluru-based Ola Electric Mobility, founded in 2017, is a pure-play electric vehicle player that primarily manufactures electric vehicles and certain core components for electric vehicles such as battery packs, motors, and vehicle frames at the Ola Futurefactory.
The Rs 6,145.55 crore-IPO of Ola Electric includes a fresh share sale of up to Rs 5,500 crore and offer-for-sale (OFS) of up to 8,49,41,997 shares by its promoters and existing shareholders, including Promoter Bhavish Aggarwal and Indus Trust, along with Alpha Wave Ventures, Alpine Opportunities Fund, Internet Funds III, MacRitchie Investment, Matrix Partners India, and more. The net proceeds from the fresh issue shall be utilized towards capital expenditure to be incurred by its subsidiary, OCT, for the expansion of the capacity of its cell manufacturing plant; repayment or pre-payment, in full or part; investment into research and product development; expenditure to be incurred for organic growth initiatives; and general corporate purposes.
The proceeds from the IPO will be strategically allocated to:
Ola Electric allotted 36.4 crore shares to anchor investors to mop up Rs 2,763 crore at a price of Rs 76 per share. The anchor book included names like Government Pension Fund Global, Nomura India Investment, Goldman Sachs (Singapore), and Fidelity, along with SBI Mutual Fund (MF), HDFC MF, Nippon India MF, Sundaram MF, Bandhan MF, Bharti Axa Life Insurance, and more.
The investor sentiment around Ola Electric’s IPO is overwhelmingly positive, driven by the company’s strong market presence, innovative products, and the favorable regulatory environment in India. Analysts predict a high subscription rate, reflecting the market’s confidence in Ola Electric’s future prospects.
The Indian government has been proactive in promoting EV adoption through various incentives, subsidies, and policy frameworks. However, navigating the regulatory landscape can be challenging due to the evolving nature of policies and standards. Ola Electric’s ability to adapt to these changes will be crucial for its sustained growth.
Ola Electric operates in a highly competitive market with several established players and new entrants vying for market share. Companies like Ather Energy, Hero Electric, and international brands like Tesla and BYD are intensifying the competition. Ola Electric’s focus on innovation, customer experience, and affordability will be key differentiators.
The rapid pace of technological advancements in the EV sector presents both opportunities and challenges. Continuous investment in research and development is essential to stay ahead of the curve. Ola Electric’s partnerships with technology leaders like Siemens enhance its capability to integrate cutting-edge innovations into its products.
Ensuring a resilient supply chain and maintaining high production standards are critical for Ola Electric. The company’s Ola Futurefactory, with its high degree of automation and efficiency, plays a pivotal role in meeting these demands. However, global supply chain disruptions, particularly in semiconductor and battery components, pose potential risks.
Ola Electric has ambitious plans for expansion. The company aims to diversify its product portfolio to include electric cars and commercial vehicles, addressing a broader spectrum of the EV market. Additionally, Ola Electric is exploring opportunities in international markets, particularly in Southeast Asia, Europe, and Latin America.
The Indian government’s target of having 30% of all vehicles on the road be electric by 2030 presents a significant growth opportunity for Ola Electric. The company’s extensive distribution network, coupled with its strong brand recognition, will facilitate deeper market penetration.
Ola Electric is committed to driving innovation and sustainability. The company’s investment in advanced battery technologies, such as solid-state batteries, aims to enhance energy density, reduce charging times, and increase vehicle range. Initiatives like the Ola Hypercharger Network, which plans to deploy 100,000 charging points across India, underscore Ola Electric’s dedication to building a comprehensive EV ecosystem.
The widespread adoption of electric vehicles has far-reaching environmental and societal benefits. Ola Electric’s mission aligns with global efforts to reduce carbon emissions, improve air quality, and promote sustainable urban mobility. By making electric vehicles more accessible and affordable, Ola Electric is contributing to a cleaner and greener future.
The IPO of Ola Electric marks a significant milestone in the company’s journey and the broader EV industry in India. With its strong financial foundation, innovative product offerings, and strategic vision, Ola Electric is well-positioned to lead the electric mobility revolution. While challenges remain, the company’s focus on sustainability, technological advancements, and market expansion provides a solid foundation for future growth. For investors, Ola Electric’s IPO represents a unique opportunity to participate in the transformative shift towards sustainable transportation and be part of a pioneering company in the electric vehicle space.
As Ola Electric embarks on this new chapter, its journey will undoubtedly inspire and influence the future of mobility in India and beyond. The road ahead is promising, and Ola Electric is poised to drive the change towards a cleaner, greener, and more sustainable world.
]]>| Company: | Tata Consultancy Services TCS |
| CEO: | Rajesh Gopinathan |
| Year founded: | 1968 |
| Headquarter: | Mumbai, Maharashtra, India |
| Employees (FY2022): | 592,195 |
| Type: | Information technology Software Consulting Outsourcing |
| Ticker Symbol: | TCS |
| Market Cap (Jan 2022): | $162.20 Billion |
| Annual Revenue (FY2021): | US$26 billion |
| Profit | Net income (FY2021): | US$5.0 billion Net Income |
| Key Competitors: | Accenture, Infosys, Wipro, HCL, Cognizant, Tech Mahindra, Capgemini, DXC Technology, NTT Data |
| Products & Services: | Analytics and Insights Blockchain Cognitive Business Operations Cyber Security Enterprise Applications Quality Engineering Automation & AI Cloud Consulting IoT & Digital Engineering TCS Interactive Sustainability Services PRODUCTS TCS BaNCS TCS Connected Intelligence Platform ignio TCS iON TCS MasterCraft TCS Optumera TAP CHROMA TCS Customer Intelligence & Insights TCS Intelligent Urban Exchange Jile TCS OmniStore Quartz – The Smart Ledgers PLATFORMS TCS ADD TCS BFSI Platforms ERP on Cloud TCS HOBS![]() |
| Areas Covered Geographically | 55 countries – North America, South America, Europe, Middle-east, Africa, South Asia, South East Asia(ASEAN), ANZ, North Asia |

Overview of the company – A part of the Tata group, India’s largest multinational business group, TCS has over 592,000 of the world’s best-trained consultants in 55 countries. It is currently the 67th Largest company by market cap in the world. The company generated consolidated revenues of US $25.7 billion in the fiscal year ended March 31, 2022, and is listed on the BSE (formerly Bombay Stock Exchange) and the NSE (National Stock Exchange) in India.
In FY 2022, the company crossed a milestone of $25 billion in revenues, experiencing strong growth of 15.9%, adding all-time high incremental revenue of $3.5 billion. This growth has come with an industry-leading operating margin of 25.3%. Since the start of the last decade, the company has grown over four times, comfortably outperforming its largest global competitors. TCS had a 17.7% growth in market value to `13,83,427 crore in the past year 2021-22.
1. A strong order book of $34.6 billion in 2022.
2. Recognition in all global markets as a dominant Technology consulting player
3. Extremely strong capability in ERP Consulting, Cloud Consulting, and Retail transformations.
4. A dominant player in Cloud-native capabilities and digital transformation
5. Large Talent pool to take 1+ billion USD large deals.
6. A diverse talent pool from 153+ Nationalities of the World.
7. 200000 women employees touching almost 40% of the workforce.
8. Has developed 50000 Contextual Masters a community of experts with deep domain and technical expertise, customer business, industry landscape, and futuristic technological development.
9. Selected by Payments Canada, the country’s largest payment organization, to transform its payment system operations and help implement the RealTime Rail (RTR), the new real-time payments system that will allow Canadians to initiate payments and receive irrevocable funds in seconds
10. Became the #2 most valuable brand in the IT services sector globally.
11. Ranked #1 in Customer Satisfaction in the largest survey of European businesses by Whitelane Research, for the ninth consecutive year, covering 1,800 CxOs from top IT spending companies in Europe.
12. Selected by the Government of India to drive the second phase of the pathbreaking Passport Seva
13. Program.
14. Ranked #1 by revenue in the UK Software and IT Services Rankings
15. Increased the number of Large clients of 100+ Million USD to 58.
16. Increased the number of Mid-size clients of 50+ Million USD Revenue to 150
1. Not Nimble enough to fight Software-as-a-Service (SaaS) startups and unicorns coming up in niche spaces for IT operations and services.
2. Lags behind the competition when it comes to winning small, medium-size deals in Banking, Telecom, Manufacturing, and analytics space.
3. Aging senior workforce, organizational inertia leads to loss of deals in some cases.
4. Still hasn’t cracked China market strongly compared to Accenture, IBM, and Cognizant.
1. Long-term investments in futuristic areas of research to address customers’ needs
2. Upcoming contracts in cloud and TCS being recognized as a partner of choice by both Microsoft and Google make it even better positioned to win large deals in cloud consulting, digital transformation, industrial internet, automation, and AI.
3. 5G rollouts in various countries in 2023-2024 will add significant revenue to TCS stables.
4. Early investment in Technologies like cognitive robotics; quantum computing; next-generation communications technologies sensing, digital twins for social systems, efficient and robust AI & deep learning, metagenomics, immersive technologies, sustainability, generative design for materials, Manufacturing & life sciences, and personalized nutrition and medicine will win early deals and help TCS establish a bridgehead in before the competition.
5. TCS has been selected by Takeda, the global biopharmaceutical giant, to be a digital transformation partner.
6. TCS has been selected by Bovemij the Netherlands-based Insurance client for Digital Strategy and Digital mobility services.
7. The government of Israel’s Ministry of Finance has selected TCS as a partner in the key transformation of its banking sector to enable digital-only banks
Also read: Tata Teleservices SWOT Analysis
1. The year also witnessed a sharp rise in employee turnover across the industry. TCS’ attrition in IT services (LTM) was 17.4% in FY 2022.
2. Data Laws in countries and unions might disrupt some of the operations.
3. Manpower intensive Technological work which still requires international travel is quite disturbed due to covid. 2rd largest economy china and financial hub Hong Kong are having travel curbs leading to delays in implementation.
4. SaaS model of software will continue to eat revenue and workshare from all traditional IT services and consulting companies.
ThoughtWorks IPO (TWKS) is soon coming on Nasdaq. Thoughtworks was always a very strong competitor in my career as a salesperson. Thoughtworks is a leader when it comes to digital transformation Microservices agile jobs. It really doesn’t have any competitors when it comes to the expertise in trendsetting and consulting in Microservices. The very principles of Microservices, Agile, DevOps, were formed and contributed by research scientists and employees of Thoughtworks.
Now, why is ThoughtWorks going to be successful in the future? Because these very technologies in which Thoughtworks is an expert are going to be massively in demand for the next 10 to 15 years. Now you would say that what is Microservices why is it important in the next 10 to 15 years?
So read this in this way that all successful services such as Netflix, Amazon, Robinhood, Google, Facebook, Zalando, Groupon,eBay, Uber, Comcast, Soundcloud are based on the technology principle of Microservices which Martin Fowler and James Lewis of Thoughtworks laid the foundation of.
We are soon going to see a massive digital transformation in all types of businesses and platforms which will need the services of companies like Thoughtworks. Thoughtworks is going to be the digital transformation partner for many of the traditional and large businesses. A lot of business that comes to Thoughtworks comes because of its brand name in the consulting space of Microservices and digital transformation. Thoughtworks beats its competition in many deals for such kind of IT consulting work. And it was one of my top toughest competitors during my work as an IT consulting salesperson.
Thoughtworks is on the invitee list as a vendor for the digital transformation of many chief information officers and chief digital officers of large businesses.
The biggest threat which might come to Thoughtworks is from large Indian IT companies, large IT consulting and services companies from the United States and Europe. But given its leadership position, it might hold on a significant market share in such services. Although history and expertise are on the side of Thoughtworks it should not rest on its past laurels and continue to invest in newer technology. It should keep its well-known focus on research and development in areas of setting new technology principles to boost shareholder belief in the company after ThoughtWorks IPO.

Thoughtworks Holdings Inc. TWKS, has set terms of its initial public offering, which could value the Chicago-based technology consultancy company at up to $6.10 billion. A total of 36.84 million shares will be offered in the ThoughtWorks IPO, with the company offering 16.43 million shares and selling shareholders offering 20.41 million shares. n the document, ThoughtWorks revealed that it would offer 36,842,106 shares of common stock at a price per share between $18 and $20. This means ThoughtWorks could raise up to $328.6 million through this IPO. The stock is expected to list on the Nasdaq under the ticker symbol “TWKS.” It has filed paperwork under the name Turing Holding Corp but plans to change its name to Thoughtworks Holding Inc before the completion of the IPO. Goldman Sachs and J.P. Morgan are the lead underwriters for the ThoughtWorks IPO offering.
The 28-year-old firm provides services to companies such as Canadian wireless carrier TELUS Corp, U.S. supermarket chain Kroger Co and payments company PayPal Holdings Inc. It has helped numerous well-known corporations — including Atlassian, Bayer, Sephora, PayPal, Porsche, and more — on their digital transformations and strategies. Thoughtworks integrates strategy, design, and software to help businesses succeed online. It provides premium, end-to-end digital strategy, design, and engineering services to assist companies with their digital transformation. Walmart, PayPal, Kroger, Bayer, and other well-known companies have benefited from the company’s services. Thoughtworks provides its services to over 300 companies. You should consider this list of customers when investing in ThoughtWorks IPO.

The digital transformation, IT consulting, Microservices is almost 400 billion dollar market size item in the technology industry. A vast majority of that might come to Thoughtworks due to its established presence in the consulting space and its recognized leadership in the Microservices arena. The global microservices architecture market size was valued at $2,073 million in 2018 and is projected to reach $8,073 million by 2026, registering a CAGR of 18.6% from 2019 to 2026. Microservices architecture (MSA) is a process of developing software systems in which large monolithic applications are broken down into smaller manageable independent services.
The global digital transformation market size was valued at USD 336.14 billion in 2020 and is expected to grow at a compound annual growth rate (CAGR) of 23.6% from 2021 to 2028. The growing demand for advanced technology, such as the Internet of Things (IoT), across businesses and enterprises, is promoting the adoption of connected devices as well as data-rich and analytics solutions. Moreover, these solutions enable the integration of intelligence into business operations and processes to facilitate improved and effective customer engagements, while driving operational optimization. The increasing use of mobile devices, smartphones, and applications across business processes and departments is also promoting digitization and is expected to drive the market over the forecast period. Shifting from traditional to digitalized business models facilitates the introduction of additional advanced technological products and services across industries and sectors.
Looking at this data we can gauge how much business ThoughtWorks can target and thus make a sound decision on ThoughtWorks IPO.
Digital transformation enables organizations to improve their operational performance, customer experience, brand reputation, and customer retention ratios. Moreover, digitally transformed businesses can efficiently adapt to the changing technological landscape and can address sudden shifts in the industry, especially the one currently brought in by the Covid-19 pandemic; studies suggest that the efficiency and rate of adaptation of digitally transformed businesses to a post-pandemic era are much higher than traditional businesses.
The increasing demand for industrial automation is also one of the key drivers of the market. The rising adoption of wireless communication and other advanced technologies across several businesses and verticals is expected to drive the rate of digital transformation. Several industries, including energy & power, manufacturing, healthcare, and education, are investing in automation solutions to make an immediate and lasting difference in terms of optimization of processes. These industries have begun to shift toward complete digitization by implementing smart systems and IoT sensors across processes. However, some untapped areas continue to remain within businesses and enterprises, along with a few industries and sectors, where the rate of digitization has been traditionally low. For instance, the manufacturing sector, especially across emerging economies, has traditionally been a slow adopter of advanced techniques and technologies. As we mentioned earlier ThoughtWorks is the market leader and this should be taken into consideration before investing in ThoughtWorks IPO.
First proposed by Martin Fowler(Thoughtworks) and James Lewis(Thoughtworks) in 2014, microservices architecture style is a way to develop a single application using a set of small services, each running in its own process and communicating using lightweight mechanisms, usually, HTTP APIs, that are built on business capabilities and can be deployed independently through automated deployment mechanisms, implemented in different programming languages, and different data storage technologies, with minimal centralized management.
In the traditional IT industry, most of the software is piling up a variety of independent systems, the problem of these systems is summed up as poor scalability, reliability is not high, high maintenance costs. However, since SOA used bus mode in the early days, this bus mode is strongly bound to a certain technology stack, such as J2EE (Java enterprise). This results in many enterprises ‘ legacy systems are difficult to connect, the switching time is too long, the cost is too high, the convergence of the stability of the new system also takes some time. In the end, SOA looks beautiful, but it has become an enterprise-class luxury that small and medium-sized companies are afraid of.
In the introduction of microservices, we must first understand what microservices are. As the name suggests, microservices have to be understood from two aspects, what is “micro” and what is “service”. In the narrow sense, the small and famous”2 pizza team” is a good interpretation of this explanation (the 2 pizza team was first proposed by Amazon CEO Bezos, meaning that the design of a single service, all participants from the design, development, testing, operation and maintenance owners add up to only 2 pizzas). The so-called service must be different from the system, service one or a set of relatively small and independent functional units is the user can perceive the minimum set of functions.
]]>First, the introduction of microservices
1. What are Microservices
In the introduction of microservices, we must first understand what microservices are. As the name suggests, microservices have to be understood from two aspects,what is “micro” and what is “service”. In the narrow sense, the small and famous”2 pizza team” is a good interpretation of this explanation (the 2 pizza team was first proposed by Amazon CEO Bezos, meaning that the design of a single service, all participants from the design, development, testing, operation and maintenance owners add up to only 2 pizzas). The so-called service, must be different from the system, service one or a set of relatively small and independent functional units, is the user can perceive the minimum set of functions.
2. Origin of Microservices
First proposed by Martin Fowler and James Lewis in 2014, microservices architecture style is a way to develop a single application using a set of small services, each running in its own process and communicating using lightweight mechanisms, usually HTTP APIs, that are built on business capabilities and can be deployed independently through automated deployment mechanisms, implemented in different programming languages, and different data storage technologies, with minimal centralized management.
3. Why do you need microservices?
In the traditional IT industry, most of the software is piling up a variety of independent systems, the problem of these systems is summed up as poor scalability, reliability is not high, high maintenance costs. However, since SOA used bus mode in the early days, this bus mode is strongly bound to a certain technology stack, such as: J2EE. This results in many enterprises ‘ legacy systems are difficult to connect, switching time is too long, the cost is too high, the convergence of the stability of the new system also takes some time.In the end, SOA looks beautiful,but it has become an enterprise-class luxury that small and medium-sized companies are afraid of.
3.1 Problems caused by the monolithic architecture
The single architecture works well in the case of a relatively small scale, but with the expansion of the scale of the system, it exposes more and more problems, mainly the following points:
1.Complexity gets higher
For example, some projects have hundreds of thousands of lines of code, the difference between the various modules is more vague, the logic is more confusing, the more code complexity, the more difficult to solve the problem encountered.
2.Technological debt is rising
The company’s personnel flow is a normal thing, some employees before leaving, neglect the quality of the self-control, resulting in leaving a lot of errors, due to the huge amount of project code, a error is difficult to find, which brings great trouble to the new employees, the greater the turnover of personnel left more errors, which is the so-called technical debt more and more.
3.Deployment slows down gradually
This is very well understood, the single architecture module is very large, the amount of code is very large, resulting in the deployment of the project takes more and more time, once some projects start to take 10 minutes, what a terrible thing ah, start a few projects a day will pass, leaving developers very little time to develop.
4.Hindering technological innovation
For example, a previous project was written using struts2, due to the inextricably linked between the various modules, the amount of code, the logic is not clear enough, if you want to use spring mvc to refactor this project will be very difficult, the cost will be very large, so more often companies have to bite the bullet to continue to use the old struts architecture, which hinders the innovation of technology.
5.Cannot scale on demand
For example, the movie module is a CPU-intensive module,and the order module is IO-intensive module, if we want to improve the performance of the order module, such as increasing memory, increasing hard disk, but because all modules are in one architecture, so we have to consider other module factors when expanding the performance of the order module, because we can not expand the performance of a module and damage the performance of other modules, and thus can not scale on demand.
3.2 Differences between Microservices and Monolithic Architectures
Each module of microservices is equivalent to a separate project. The amount of code is significantly reduced, and the problem is relatively easy to solve.
Single architecture All modules share a database, the storage mode is relatively single, microservices each module can use a different storage mode (for example, some use redis, some use mysql, etc.), the database is also a single module corresponding to its own database.
Monolithic architecture All module development uses the same technology, microservices each module can use a different development technology, the development mode is more flexible.
3.3 Microservices and SOA Differences
Microservices, in the essence, are SOA architectures.In a microservice system, there can be services written in Java or services written in Python. They are unified into a system by Restful architectural style.So the microservices themselves have nothing to do with the specific technology implementation, and are highly scalable.
4. The Nature of Microservices
Microservices, the key is not just the microservices themselves,but the system should provide a set of basic architecture, which allows microservices to be deployed, run, and upgraded independently. Not only that, the system architecture also allows microservices and microservices to be structurally “loosely coupled”, and functionally expressed as a unified whole.This so-called“unified whole”shows a unified style of interface, unified rights management, unified security policy, unified on-line process, unified log and audit methods, unified scheduling, unified access entry and so on.
The purpose of microservices is to effectively split applications for agile development and deployment.
Microservices promote the idea that inter-team should be inter-operate, not integrate .inter-operate is to define the boundaries and interfaces of the system. In a team full stack, let the team be autonomous, because if the team is formed in such a way, the cost of communication within the system will be maintained, each subsystem will be more cohesive, each other’s dependent coupling can become weak, cross-system communication costs can be reduced.
5. What kind of project is suitable for microservices
Microservices can be divided according to the independence of the business function itself, if the system provides services that are very low-level, such as: operating system kernel, storage system, network system, database system, etc., such systems are low-level, there is a close relationship between functions and functions, if forced to split into smaller service units, will make the integration workload rise sharply, and this artificial cutting can not bring real isolation on the business, so can not be deployed and run independently, it is not suitable for making microservices.
Whether you can make a microservice depends on four elements:
6. Microservice Folding and Design
Moving from a monolithic structure to a microservice architecture will continue to encounter the problem of service boundary division: for example, we have a user service to provide the basic information of the user,so should the user’s avatar and picture, etc. be divided into a new service is better or should it be merged into the user service?If the granularity of the service is too coarse, it is back to the old way of monolithic; if it is too fine, the overhead of inter-service calls becomes negligible, and the difficulty of management increases exponentially.So far, there is no standard that can be called service boundary division, which can only be adjusted according to different business systems
The big principle of splitting is that when a business does not depend on or rarely depends on other services,has independent business semantics, provides data for more than 2 other services or clients, then it should be split into a separate service module.

6.1 Microservice Design Principles
Principle of Single Responsibility
It means that each microservice only needs to implement its own business logic on it, such as the order management module, it only needs to process the business logic of the order on it, and the rest does not need to be considered.
Principles of Service Autonomy
It means that each microservice is independent from development, testing, operation and maintenance, etc., including the stored database is also independent, there is a complete process, we can treat it as a project.Do not have to rely on other modules.
Lightweight Communication Principles
The first is that the language of communication is very lightweight, second, the communication mode needs to be cross-language, cross-platform, cross-language is to make each microservice has enough independence, can not be controlled by technology.
Clear principles of interfaces
Since there may be invocation relationships between microservices, in order to try to avoid future adjustments due to changes in the interface of a microservice, it is necessary to take into account all situations at the beginning of the design, so that the interface is as common and flexible as possible, so as to avoid other modules also making adjustments.
Each microservice can run independently in its own process;
A series of independently running microservices work together to build the entire system;
Each service is developed as a separate business, and a microservice generally completes a specific function,such as: order management, user management, etc;
Microservices communicate through lightweight communication mechanisms,such as calls via REST APIs or RPC.
Easy to develop and maintain
Since a single module of microservices is equivalent to a project, the development of this module we only need to care about the logic of this module, the amount of code and logical complexity will be reduced, so that it is easy to develop and maintain.
Faster start-up
This is relative to a single microservice, and the service speed of starting a module is obviously much faster than starting an entire project with a single architecture.
Local modifications are easy to deploy
We found a problem in the development. If it is a single architecture, we need to re-release and start the whole project,which is very time-consuming, but microservices are different. Which module has a bug we only need to solve the bug of that module, after solving the bug, we only need to restart the service of this module, the deployment is relatively simple, do not have to restart the entire project, thus saving time.
The technology stack is not limited
For example, order microservices and movie microservices were originally written in java.Now we want to change the movie microservices to NodeJS technology,which is entirely possible,and because the focus is only on the logic of the movie, the cost of technology replacement will be much less.
Scaling on demand
We said above that monolithic architecture when you want to extend the performance of a module, you have to take into account whether the performance of other modules will be affected. For our microservices, it is not a problem at all.
High operation and maintenance requirements
For a single architecture, we only need to maintain this project, but for a microservice architecture, because the project is composed of multiple microservices, each module problem will cause the whole project to run abnormally, it is often not easy to know which module caused the problem, because we can not track the problem step by step through debug, which puts forward high requirements for the operation and maintenance personnel.
Distributed Complexity
For a single architecture, we can not use distributed, but for a microservice architecture, distributed is almost a necessary technology, due to the complexity of distributed itself, resulting in microservice architecture has become complex.
High cost of interface adjustment
For example, user microservices are to be called by order microservices and movie microservices. Once the interface of the user microservices changes greatly, then all the microservices that depend on it have to be adjusted accordingly. Since the microservices may be very large, the cost of adjusting the interface will be significantly increased.
Repetitive work
For a single architecture, if a business is used by multiple modules, we can abstract it into a tool class that is called directly by all modules,but microservices cannot do so, because the tool class of this microservice cannot be called directly by other microservices, so we have to build such a tool class on each microservice, resulting in duplication of code.
8. Microservices Development Framework
At present, the development framework of microservices, the most commonly used are the following four:
Spring Cloud:http://projects.spring.io/spring-cloud (Now very popular microservice architecture)
Dubbo:http://dubbo.io
Dropwizard: http://www.dropwizard.io (Focus on the development of individual microservices)
Consul, etcd&etc.(Modules for microservices)
9. The difference between Sprint cloud and Sprint boot
Spring Boot:
Designed to simplify the creation of product-level Spring applications and services, it simplifies configuration files, uses embedded web servers, contains many out-of-the-box microservices capabilities, and can be deployed jointly with spring cloud.
Spring Cloud:
The Microservice toolkit provides developers with development kits for distributed system configuration management, service discovery, circuit breakers, intelligent routing, micro-agent, control bus and so on.
Second, microservices practice
1. How do clients access these Microservices services?(API Gateway)
The traditional way of development,all services are local, the UI can be called directly, now split into independent services by function, running in a separate Java process that is generally on a separate virtual machine.How does the client UI access his?There are N services in the background,the front desk needs to remember to manage N services,a service offline / update / upgrade, the front desk will be redeployed, which obviously does not serve our split concept, especially when the current desk is a mobile application, usually the pace of business changes is faster.In addition, N small service calls are not a small network overhead.There are also general microservices within the system, usually stateless, and user login information and rights management is best to have a unified local maintenance management (OAuth).
Therefore, generally between the N services in the background and the UI will generally be a proxy or called API Gateway,his role includes
Provide a unified service portal for microservices to be transparent to the foreground
Aggregate back-end services to save traffic and improve performance
Provide security, filtering, flow control and other API management functions
In fact, I understand that this API Gateway can have a lot of generalized implementation, it can be a soft and hard box, it can be a simple MVC framework, or even a Node.The server side of js.Their most important role is to provide an aggregation of background services for the foreground (usually mobile applications), provide a unified service exit, and de-coupling between them, but API Gateway can also become a single point of failure or a performance bottleneck.
2. How do Microservices communicate?(Service calls)
Because all microservices are independent Java processes running on independent virtual machines, so the traffic between services is IPC (inter process communication), there have been many mature programs.Now there are two ways to basically the most versatile.In these ways, you can write a book in terms of expansion, and we are generally familiar with the details, and we do not expand the talk.
REST(JAX-RS,Spring Boot)
RPC(Thrift, Dubbo)
Asynchronous message calls(Kafka, Notify)
General synchronous call is relatively simple, consistency is strong,but easy to call problems, performance experience will be worse, especially when the call level is more.The comparison between RESTful and RPC is also a very interesting topic.General REST based on HTTP, easier to implement, easier to be accepted, the server implementation technology is more flexible,each language can support, at the same time across the client, there are no special requirements for the client, as long as the package of HTTP SDK can be called, so relatively wide use.RPC also has its own advantages, the transport protocol is more efficient,more secure and controllable, especially in a company, if there is a unified development specification and a unified service framework, his development efficiency advantages are more obvious.Look at the actual conditions of their technical accumulation, their own choice.
The asynchronous message mode has a particularly wide range of applications in distributed systems, he can reduce the coupling between the calling services, but also become a buffer between calls, to ensure that the backlog of messages will not flush the callee, while ensuring the caller’s service experience, continue to do their own work, will not be slow down by background performance.However, the cost is to weaken the consistency, the need to accept the final consistency of the data; there is a background service generally to achieve idempotence, because the message is sent for performance considerations will generally be repeated(to ensure that the message is received and received only once is a great test of performance); and finally, the need to introduce an independent broker,if there is no technical accumulation within the company, the broker distributed management is also a great challenge.
3. How do you find so many services?(Service Discovery)
In the microservice architecture, each service generally has multiple copies to do load balancing.A service may go offline at any time,or it may add new service nodes to temporary access pressure.How do services perceive each other?How is the service managed?This is the problem with service discovery.There are generally two types of practices, but also have advantages and disadvantages.Basically, it is through zookeeper and other similar technologies to do distributed management of service registration information.When the service goes live, the service provider registers its service information to ZK(or similar framework) and maintains a long link through a heartbeat, updating the link information in real time.Service callers address through ZK, according to customizable algorithms, find a service, you can also cache the service information locally to improve performance.When the service is offline, ZK will send a notification to the service client.
Client-side: The advantage is that the architecture is simple,the extension is flexible, and only depends on the service registrar.The disadvantage is that the client has to maintain the address of all the calling services, there is technical difficulty, and the general large companies have mature internal framework support,such as Dubbo.
Server side: The advantage is simple,all services are transparent to the front-end caller, and applications deployed on cloud services in small companies are generally used more.
4. What if the service hangs up in Microservices?
The biggest feature of distributed is that the network is unreliable.This risk can be reduced through microservice splitting, but without special guarantees, the outcome is definitely a nightmare.We have just encountered an online failure is a very humble SQL counting function, when the number of visits increases, resulting in high database load, affecting the performance of the application, thus affecting all the foreground applications that call this application service.So when our system is composed of a series of service call chains, we must ensure that any link problem does not affect the overall link.
There are many corresponding means:
Downgrade (local caching) these methods are basically clear and generic, not detailed.
For example, Netflix’s Hystrix:https://github.com/Netflix/Hystrix
5. Issues to consider for Microservices
Here’s a very good graph summarizing the issues to consider in microservice architecture, including
API Gateway
Inter-service calls
Service Discovery
Service Fault Tolerance
Service Deployment
Data calls
Third, microservices important components
1. Microservices Basic Capabilities
2. Service Registry
Services need to create a service discovery mechanism to help services perceive each other’s existence.When the service starts, it will register its own service information to the registry and subscribe to the services it needs to consume.
The service registry is the core of service discovery.It holds the network addresses (IPAddress and Port) of each of the available service instances.The service registry must have high availability and real-time updates.The Netflix Eureka mentioned above is a service registry.It provides a REST API for service registration and query service information.The service registers its own IPAddress and Port by using a POST request.Every 30 seconds, a PUT request is sent to refresh the registration information.Log off the service with a DELETE request.The client obtains the available service instance information through a GET request. Netflix achieves high availability is achieved by running multiple instances on Amazon EC2,with each Eureka service having an elastic IP Address.When the Eureka service starts, there is dynamic allocation of DNS servers.The Eureka client obtains the network address (IP Address and Port) of Eureka by querying DNS.In general, the Eureka server address is returned and the client is in the same availability zone. Others that can act as a service registry are:
etcd-highly available, distributed, strongly consistent, key-value, Kubernetes, and Cloud Foundry all use etcd.
consul-a tool for discovering and configuring.It provides an API that allows clients to register and discover services.Consul can perform a service health check to determine the availability of the service.
zookeeper — widely used in distributed applications, high-performance coordination services. Apache Zookeeper was originally a subproject of Hadoop,but is now a top-level project.
2.1 zookeeper service registration and discovery
In simple terms, zookeeper can act as a service Registry, allowing multiple service providers to form a cluster, allowing service consumers to obtain specific service access addresses (ip+ports) through the service registry to access specific service providers.As shown in the following figure:
Specifically, the zookeeper is a distributed file system, whenever a service provider after deployment to their services registered to The zookeeper of a way on the PATH: /{service}/{version}/{ip:port}, such as our HelloWorldService deployed to the two machines, then the zookeeper will create two entries recorded: were/HelloWorldService/1.0.0/100.19.20.01:16888 /HelloWorldService/1.0.0/100.19.20.02:16888。
zookeeper provides a “heartbeat detection” function, it will periodically send a request to each service provider(in fact, a long socket connection is established), if there is no response for a long time, the service center will think that the service provider has“hung up”, and cull it, for example, 100.19.20.02 If the machine is down, then the path on zookeeper will be only/HelloWorldService/1.0.0/100.19.20.01:16888.
The service consumer will listen to the corresponding path (/HelloWorldService/1.0.0), once the data on the path has a task change (increase or decrease), zookeeper will notify the service consumer service provider address list has changed, so as to update.
More importantly, zookeeper’s innate fault-tolerant and disaster-tolerant capabilities (such as leader elections) ensure high availability of the service registry.
3. Load Balancing
In order to ensure high availability, each microservice needs to deploy multiple service instances to provide services.At this point, the client performs load balancing of the service.
3.1 Common Strategies for Load Balancing
3.1.1 Random
The request from the network is randomly assigned to multiple servers in the internal.
3.1.2 Polling
Each request from the network, in turn assigned to the internal server, from 1 to N and then start over.This load balancing algorithm is suitable for servers within the server group have the same configuration and the average service request is relatively balanced.
3.1.3 Weighted Polling
According to the different processing power of the server, assign different weights to each server, so that it can accept the corresponding number of weights of the service request.For example: the weight of the server A is designed to be 1, the weight of B is 3, the weight of C is 6, the server A, B, C will receive 10%, 30%, 60% of the service request.This equalization algorithm can ensure that high-performance servers get more usage, to avoid low-performance servers overloaded.
3.1.4 IP Hash
This way by generating a hash value of the request source IP, and through this hash value to find the correct real server.This means that his corresponding server is always the same for the same host.In this way, you do not need to save any source IP.However, it is important to note that this approach may result in an unbalanced server load.
3.1.5 Minimum number of connections
The time spent on the server for each request of the client may vary greatly. With the lengthening of the working time, if a simple round robin or random balancing algorithm is used, the connection process on each server may vary greatly and does not achieve true load balancing.The minimum number of connections balancing algorithm has a data record for each server that needs to load internally, recording the number of connections currently being processed by the server. When there is a new service connection request, the current request will be assigned to the server with the least number of connections, so that the balance is more in line with the actual situation and the load is more balanced.This equalization algorithm is suitable for long-term processing of request services,such as FTP.
4. Fault tolerance
Fault tolerance, the understanding of the word, is to accommodate the error, do not let the error expand again, let the impact of the error within a fixed boundary,”a thousand miles of embankment destroyed in the nest ” The way we use fault tolerance is to make the nest do not grow large.Then our common downgrades, current limiting, fuses, timeout retry, etc. are fault-tolerant methods.
When calling a service cluster, if a microservice invokes exceptions, such as timeouts, connection exceptions, network exceptions, etc., the service fault tolerance is made according to the fault tolerance policy.Currently supported service fault tolerance policies have fast failure, failure switching.If it fails multiple times in a row, it fuses directly and no longer initiates the call.This prevents a service exception from draining all services that depend on him.
4.1 Fault Tolerance Policy
4.1.1 Fast Failure
The service only initiates a stand-by, and the failure immediately reports an error.Typically used for write operations that are not idempotent
4.1.2 Failover
The service initiates a call, and when a failure occurs, retry the other server.Usually used for read operations, but retry brings a longer delay.The number of retries can usually be set
4.1.3 Failure Security
Fail safe, when the service call has an exception, it is ignored directly.Typically used for operations such as writing logs.
4.1.4 Automatic recovery of failures
When an exception occurs in a service call, a failed request is logged and a regular retransmission is made.Typically used for message notifications.
4.1.5 forking Cluster
Multiple servers are called in parallel, and as long as there is one success, it is returned.Usually used for high real-time read operations.The maximum number of parallelism can be set by forks=n.
4.1.6 Broadcast Calls
The broadcast calls all providers, one by one, and any failure fails.It is typically used to notify all providers of updates to local resource information such as caches or logs.
5. Fusing
Fuse technology can be said to be a kind of”intelligent fault tolerance”, when the call meets the number of failures, the failure ratio will trigger the fuse to open, there is a program to automatically cut off the current RPC call, to prevent further expansion of the error.To achieve a fuse is mainly to consider three modes, off, open, half open.The transition of each state is shown below.
When we deal with exceptions, we have to decide how to handle them according to the specific business situation. For example, we call the commodity interface, the other party only temporarily does the downgrade process, then as a gateway call, we have to cut to the alternative service to perform or get the bottom data, and give user-friendly tips.There is also a need to distinguish the type of exception, such as the dependent service crashes, which may take a long time to solve.It may also be that the server load is temporarily too high, resulting in a timeout.As a fuse should be able to identify this type of exception, so as to adjust the fuse strategy according to the specific type of error.Added manual settings, in the case of failed service recovery time is uncertain, the administrator can manually force the switch fuse state.Finally, the fuse usage scenario is to call a remote service program or shared resource that may fail.If local private resources are cached locally, the use of fuses increases the overhead of the system.Also note that fuses cannot be used as an exception handling substitute for business logic in your application.
Some exceptions are stubborn, sudden, unpredictable, and difficult to recover, and can also lead to cascading failures (for example, suppose a service cluster load is very high, if a part of the cluster hangs up at this time, but also accounts for a large part of the resources, the entire cluster may suffer).If we continue to retry at this time, the result is mostly a failure.Therefore, at this time our application needs to immediately enter the failure state(fast-fail), and take the appropriate method for recovery.
We can use a state machine to implement CircuitBreaker, which has the following three states:
Closed: Circuit Breaker is closed by default, allowing the operation to be executed.CircuitBreaker internally records the number of recent failures, and if the corresponding operation fails, the number will continue once.CircuitBreaker transitions to the Open state if the number of failures( or the failure rate )reaches a threshold within a certain period of time.In the on state, Circuit Breaker enables a timeout timer that is set to give the cluster the appropriate time to recover from the failure.When the timer time comes, CircuitBreaker will switch to the Half-Open (Half-Open )state.
Open: In this state, the execution of the corresponding operation will fail immediately and an exception will be thrown immediately.
Half-Open:In this state, Circuit Breaker allows a certain number of operations to be performed.If all operations succeed, CircuitBreaker assumes that the failure has been restored,it transitions to a closed state, and resets the number of failures.If any of these operations fail, Circuit Breaker will assume that the fault still exists, so it will switch to the on state and turn the timer on again(giving the system some more time to recover from the failure)
6. Current limiting and downgrading
Ensure the stability of core services.In order to ensure the stability of the core service, with the increasing number of visits, you need to set a limit threshold for the number of services the system can handle, more than this threshold request is directly rejected.At the same time, in order to ensure the availability of core services, you can downgrade some non-core services,by limiting the maximum number of traffic to the service to limit the flow, through the management console for a single microservice manual downgrade.
7. SLA in Microservices
SLA: Short for Service-LevelAgreement, which means Service level Agreement. A contract between a network service provider and a customer that defines terms such as service type, quality of service, and customer payment.
A typical SLA includes the following items:
8. API Gateways
The gateway here refers to the API gateway, which means that all API calls are unified access to the API gateway layer,and there is a unified access and output of the gateway layer.The basic functions of a gateway are: unified access, security protection, protocol adaptation, traffic control, long-and long-link support, fault tolerance.With the gateway, each API service provider team can focus on their own business logic processing, while the API gateway is more focused on security, traffic, routing and other issues.
9. Multi-level caching
The simplest cache is to look up the database once and then write the data to the cache, such as redis, and set the expiration time.Because there is expiration, we should pay attention to the penetration rate of the cache.The penetration rate calculation formula,such as query method queryOrder(number of calls 1000/1s)inside the nested query DB method queryProductFromDb(number of calls 300/s), then the penetration rate of redis is 300/1000, in this way of using the cache, it is necessary to pay attention to the penetration rate, the penetration rate is large, indicating that the effect of the cache is not good.Another way to use the cache is to persist the cache,that is, do not set the expiration time, which will face a data update problem.In general, there are two ways, one is to use the timestamp, the query is based on redis by default, each time you set the data into a timestamp, each time you read the data with the current time of the system and the last set of this timestamp to do comparison, such as more than 5 minutes, then check the database again.This can ensure that there is always data in redis, which is generally a fault-tolerant method for DB.The other is to really let redis be used as a DB.The binlog, which subscribes to the database, pushes the data to the cache through the data heterogeneous system,and sets the cache to multi-level.You can use jvmcache as a first-level cache in the application, generally small size, access frequency is more suitable for this jvmcache mode, a set of redis as a second-level remote cache,in addition to the outermost three-level redis as a persistent cache.
10. Timeouts and retry
Timeout and retry mechanism is also a method of fault tolerance, where RPC calls occur, such as reading redis, db, mq, etc., because the network failure or the dependent service failure, can not return the result for a long time, it will lead to increased threads, increased cpu load, and even lead to an avalanche.So set the timeout for each RPC call.For the case of strong dependence on RPC call resources, there must be a retry mechanism, but the number of retry is recommended 1-2 times, in addition, if there is a retry, then the timeout time should be reduced accordingly, such as retry 1 time, then a total of 2 calls occur.If the timeout is configured for 2s, then the client will have to wait for 4s to return. Therefore, retry + timeout mode, the timeout time should be reduced.Here also talk about a PRC call time is consumed in which links, a normal call statistics of time including: ① call-side RPC framework execution time + ② network transmission time + ③Server-side RPC framework execution time + ④server-side business code time.The caller and the service side have their own performance monitoring,such as the caller tp99 is 500ms, the service side tp99 is 100ms, find the network group colleagues to confirm that the network is no problem.So where is the time spent? There are two reasons, the client caller,and one reason is that TCP retransmission occurs on the network.So pay attention to these two points.
11. Thread pool Isolation
In this aspect of resistance, when Servlet3 is asynchronous, thread isolation has been mentioned. The advantage between thread isolation is to prevent cascading failures or even avalanches.When the gateway calls N more than one interface service, we need to thread isolation for each interface.For example, we have to call orders, goods, users. Then the order of the business can not affect the processing of goods and user requests.If you do not do thread isolation, when the access order service network failure leads to delay, the thread backlog eventually leads to the full-service CPU load.That is, we say that all the services are not available, how many machines will be stuffed with requests at the moment. Then with thread isolation will make our gateway can ensure that local problems will not affect the global.
12. Downgrade and current limiting
The industry HAS A VERY MATURE APPROACH TO DOWNGRADE CURRENT LIMITING, SUCH AS FAILBACK MECHANISM, CURRENT LIMITING METHOD TOKEN BUCKET, DRAIN BUCKET, SEMAPHORE AND SO ON. Let’s talk about some of our experience here, the downgrade is generally achieved by the unified configuration center downgrade switch, then when there are many interfaces from the same provider, the provider’s system or the machine room network where there is a problem, we have to have a unified downgrade switch, otherwise, it will be an interface to downgrade. That is, to have a large knife on the type of business. There is the downgrade remember violence downgrade, what is the downgrade of violence, such as the forum function down, the results of the user show a large whiteboard, we want to achieve the cache of some data, that is, there is a bottom data.If the distributed current limit is realized, a common back-end storage service, such as redis, is required to read redis configuration information using lua on large nginx nodes.Our current limit is a stand-alone current limit, and did not implement distributed current limit.
13. Gateway Monitoring and Statistics
API gateway is a serial call,then every step of the occurrence of exceptions should be recorded, unified storage in a place such as elasticserach, to facilitate the subsequent analysis of the call exception.Given that the company’s docker applications are all unified distribution, and there are already 3 agents on docker before the distribution, it is no longer allowed to increase.We have implemented an agent program to collect the log output from the server, and then send it to the kafka cluster, and then consume it to the elasticserach, and query it through the web.Now do the tracking function is relatively simple,this piece also needs to continue to be rich.
]]>Codeless / low-code programming came started gaining market currency around 2013-14. No code / low code is a way to create applications that allows developers to quickly develop applications with minimal coding knowledge. Developers assemble and configure applications through a graphical interface and visual modeling. In this way, the developer skips all the middle layer directly, the visual code block already contains 90% of the functions required by most applications, and the developer only focuses on the remaining 10% of the code logic.
As a result, some developers inevitably have a new sense of crisis: With the advent of codeless / low-code programming, are programmers going to lose their jobs? So what are we talking about when we talk about codeless / low-code programming?
At the beginning, everyone may think that the low-code development platform is similar to an IDE and integrates some tools to improve research and development efficiency. In fact, low-code platforms provide more capabilities than IDEs. Low-code development turns programming into “building blocks” and modularizes common code. Developers can drag and drop through graphical interfaces to complete application development.
This Saves time for developers to write code by hand and control application construction flexibly. In this way, developers can complete application development with very little code. Low-code platforms can not only integrate software development into other fields, but also allow enterprises in other fields to enter software development, accelerating the digital transformation of enterprises.
Low code has the following advantages:
First, quickly complete steps from demand to application . Developers can build applications for multiple platforms at the same time. Demos can be completed within days or even hours, saving development costs.
Second, reduce the complexity of research and development, and reduce the difficulty of building large-scale systems. The low-code platform framework itself handles a certain complexity, and has built-in security processes, data integration, and support for cross-platform, reducing the need for developers to manually write code repeatedly. Developers can focus on the implementation of key business logic.
Third, the low-code platform integrates the mainstream architecture, which helps accomplish rapid deployment , and also accomplish secondary software development configuration and multiple configuration development.
As early as 1982, in James Martin’s published paper “APP Development Without Program”, he proposed the idea of building applications without writing programs. Today, many IT companies are competing for the low-code market, making the above assumptions possible: such as Jinyun, a strategic investment in China, H3 BPM launched by Orzhe in 2010, and Nine Chapters Fully Collaborative Cloud with Cloud, and Google Apps abroad Companies such as Maker, Microsoft’s Power Platform, Mendix, Salesforce, etc., have laid out the low-code market.
According to a Forrester Research report, the low-code development platform market will reach $ 15.5 billion by 2020 , showing that the low-code development market is hot. In another report by Forrester Research, about 100 vendors are grabbing the market, of which Microsoft ranked first in the statistics of “who is your low-code vendor” in 2018 and 2019.
Grabbing food in the middle of the night for 2 minutes is favourite things done by many working people in china. Online orders soared six or seven times during lockdown in china as reported by various food delivery apps in china like Meituan-Dianping and ele.me .
Nearly 200 million people nationwide worked from home in this sudden epidemic. This let the business model based on digital economy show its unique advantages. The digital economy, not only safeguarded normal day to day living needs during the epidemic, but also played an important role in urban management, transportation and logistics, and production.
format of digital economy further strengthened new economic models
Speaking of the impact of the current epidemic on China’s economy, Lian Weiliang, deputy director of the National Development and Reform Commission, said that the epidemic mainly affected consumption of services such as transportation, cultural tourism, hotels, restaurants, film and entertainment. But at the same time, the digital economy and new business formats such as online shopping, online food ordering, and online entertainment are very active.
Since the implementation of the epidemic control and lockdown measures, the online “home economy” has entered a rising phase. Previously the response was tepid for online education, online shopping, remote collaborative office and other online services. But during lockdown this models have provided users with a more direct experience and benefits. Theseare implicitly cultivating and transferring user purchasing habits, which will bring more business opportunities. Make more digital applications and services to stand out from traditional models.
The development of new areas such as modern logistics systems, remote offices, and online medical services has satisfied people’s needs during the epidemic, reduced service personnel movements, reduced the risk of epidemic transmission, and made important contributions to stable economic growth in china. At the same time, the stagnation of social functions under the epidemic situation has been alleviated, reflecting the vitality and advantages of the digital economy, and highlighting the value and potential of the digital economy.
The sustained development of the digital economy under the epidemic has benefited from China’s focus and accumulation of technological advantages, especially big data, artificial intelligence, 5G and other technologies. Which have effectively promoted economic transformation. These technologies during epidemic prevention and control helped in streamlining people’s work and Life providing strong support.
Although the offline service industry relying on passenger traffic has been greatly affected in the short term, the continued development of new formats and models of the digital economy reflects the huge potential of the Chinese market. The trend of consumption upgrade to new economy continues and there is enough space to ensure the Chinese economy’s fundamentals for long-term positive and high-quality growth remain unchanged.
Enterprises seized the opportunity of digital transformation
Since the outbreak of the epidemic, temporary isolation has not blocked people’s life completely but they felt the charm of digital technology and the digital economy more closely. And Chinese digital technology enterprises are also participating in the epidemic prevention and control and economic reconstruction in an all-round way through digitalization and intelligence through flexible and diversified innovative technological means. Bringing light, Hope and confidence to the people in the fog of new coronavirus
If SARS in 2003 opened the door to the Internet and digital industrialization, then the new Covid-19 epidemic may become a key node that stimulates the digital transformation of SMEs and the acceleration of industrial digitalization. Under the influence of the epidemic, more and more SMEs are beginning to realize the importance of digitalization due to losses some of them faced due to non-integrating with digital consumer ecosystem.
Under the pressure of the epidemic, many companies are finding ways to digitally transform and innovate. On the one hand, companies are starting from the key needs of customers and the market, seize the key elements to promote business growth, and realize product and service innovation through new technologies, new models, and new channels. On the other hand, they are relying on digital analysis of the company’s existing architecture and applications, strategizing the business’s dependence on systems and softwares, formulating a comprehensive and effective well-organized migration plan, and proceeding in an orderly manner.
Whoever can seize the market newly formed needs will be the one to seize blue ocean of the new digital era post coronavirus epidemic. One who transforms in this adversity, will see gain in larger market share when “spring” arrives.
As Chinese Government said, “At present, the Chinese are still fighting the epidemic intensively, and the economy will be affected in the short term. However, the rapid development of the digital economy will largely hedge against the negative impact of the epidemic. A huge Chinese market is still there, and the fundamentals of China’s long-term fundamentals and high-quality growth have not changed. China is confident and capable of defeating the epidemic and maintaining long-term stable economic development. “