How should we establish e-business architecture from scratch?
Created#More Posted time:Dec 5, 2016 13:36 PM
Question thrown out
Mr Yu from Ant Financial threw out a question in the e-business financial architecture group today: “How should we select the technology and quickly deploy an e-business website from scratch? “
Heated discussions inspired
Background of e-business companies in the discussion: “Internet +” e-business platforms of traditional industries, “cross-border e-businesses” in the teeth of the storm, and e-business practitioners from well-known corporations.
Mo Junbin from UC said:
“I think...it’s important to well establish the infrastructure and then launch services...on the cloud...In this way, we can concentrate on the business.” (Thumb up for you, and for your expertise in being “cute”.)
The isnow from Beijing shared his experience:
“We established our e-business website last October (Note: 2014) from scratch. The website is focused on 2b2c intellectual property businesses. We first deploy the website on the cloud of Capital Online, using Bootstrap for the front-end, nginx for load balancing, Spring MVC+Spring+MyBatis for the back-end, and MySQL for databases. We introduced third-party payment methods such as Alipay and UnionPay. The website contains a front-end user access system and a back-end business system, which are separately deployed. The front-end was deployed on two Tomcat servers, with one primary and one standby MySQL databases. This is roughly the architecture of our first version of system. At first, our product line was comparatively simple. We launched our featured products and then other businesses during later iteration processes. ”
Mr Yu thought I just don't believe you haven't encountered any problems: “Jump to the problems,” Yu said.
And then isnow activated the grumbling mode:
1. Because of issues with the personnel and process, the changed class files were deployed directly at every launch and the code management failed to catch up;
2. With the increasing business lines, we found the original business architecture could not be expanded, and the code reusing efficiency was low for every newly-added business line;
3. Because of the large amount of files in the business line, the file IO slowed down with the increasing orders;
4. And with the business orders growing, the access to orders started to slow down;
5. The business system was in an O2O model, so the business statuses were subject to frequent changes due to the client operations. In the current phase, a dedicated personnel is responsible for changing the data status, which I personally think is too risky;
6. The business party changes a lot, and our products have no reference in the market for the time being (we are the first runner). So our businesses have been constantly changing and then it forms a seemingly business confusion. Later, we recruited a CTO, and transferred a lot of business logic to the database during the 2nd version of the system, to solve the problems in the stored procedures, causing scattered business logic.
7. I feel it is hard for technicians in start-ups. No experts are available, leaders tend to be conservative in trying new technologies that they are not sure of, and they even sometimes decide to put up with technical or business pitfalls for the sake of stability.”
Mr Yu became restless seeing this: “The experience of CTO determines the technology stack! The stored procedure is a big pitfall which creates problems for splitting, services and readability in future.”
• Xiaogang interposed a suggestion: “Hardware and network should be purchased from the manufacturer directly.” (Well you can do whatever you like as long as you have money.)
• Kerwin from Kingsoft said: “First think of an expandable framework.” (This is truly the style of a big company - so wealthy.)
• Kong Qinglong from Beijing said: You want to establish an e-business website from scratch?
1. About the technology selection, first you should know what you want. This requires well-organized business analysis, business architecture and strategies to locate the key demands. Through the key demands, you can select from the technologies or software suites in the market, that is, the application architecture selection.
2. Fast deployment: This involves many issues, such as data architecture, infrastructure, application architecture and security architecture. If the security requirement is not that high, it is a good option to go on-cloud, as the cloud can provide a full set of PaaS and SaaS solutions after all.
3. About the technology stack: You should pay primary attention to creating a tailored technology stack according to your team personnel. It involves, from the front-end to the back-end (jQuery, Bootstrap and so on), HTTP gateway or LBS (nginx and F5), container intermediate (Tomcat, JBoss, WebLogic and so on), applications (SSH, distributed Dubbo), databases (MySQL, Redis, Oracle, DB2 and so on), monitoring software (application monitoring, network monitoring, database monitoring and service monitoring).
4. About the team: How to quickly establish the website and how to implement DEVOPS (technical tools include: Maven, SVN/Git, Sonar, Jenkins, Confluence, JIRA and Nexus).
• Mr Yu added: “Container middleware (Tomcat, JBoss and WebLogic among others) are dominated by Tomcat and Jetty. Others are too heavy. ”
• Jesse who just set foot in the cross-border e-business said: Our project was launched online within one and a half months.
1. The servers and databases were purchased to reduce the O&M cost. Currently we use ECS and RDS, both are provided by Alibaba Cloud. The framework is Spring+MyBatis and the server is Tomcat.
2. We adopt OSS for image storage, custom domain names, CDN acceleration (also from Alibaba Cloud). The homepage optimization includes separation of static and dynamic pages and asynchronous loading, shortening users’ homepage loading time from more than seven seconds to less than three seconds. But because of the hasty launch, many details were not optimized and determined. As a result, we use new projects directly for some changing modules so that changes will not affect other modules. We use Git to manage code. It seems useless if there are no services.
3. We use EHCache for cache and every server maintains a copy. The MemCache is not used, because currently MemCache will give rise to the management cost.
4. Our load balancing service is also the SLB of Alibaba Cloud.
5. One problem of fast launch is the imperfect considerations for many technical details; the code is not refined, but cannot be changed greatly. Besides, new features should be taken into account. In the current practice, we restructure the module required to be changed during the business execution, and adopt gated launch.
6. The biggest business problem for cross-border e-business is the currency. The currency displayed for users logging in in different countries should be differentiated. For products, the customs clearance is a big problem. For the time being, the operation personnel manually declare the products at the customs for delivery. Cross-border DRP is not available at the moment, and we don’t know how to use it even if we purchase the ready service. The exchange rate is the average value of the month. To identify the country, we first let the user to choose the country. But actually there are only Chinese and English versions available.
• Mo Junbin from UC followed up with a question: “The data support in the early stage is not easy. I wonder whether there are companies dedicated to such services. ”
• Yu Bin from Beijing said: “We all use Alibaba Cloud. ”
• Xiaogang from Shenzhen said: Our business has just started, without many innovations in the technical aspects.
1. Hardware bandwidth: Non-core businesses - Alibaba Cloud;
2. Overall architecture: Hierarchical mode+microservice mode; reusable core features are pushed down and extracted to services.
3. Technology selection
3.1. Website front-end: PHP+Yii+Thrift+Alibaba Cloud OCS+MySQL;
3.2. Background services: Spring+MyBatis+Thrift+dubbo+MySQL
• At last, someone from another group shared their experience:
Our current e-business platform can be said to be established from scratch, and I participated in the full process, including the discussions on the technology selection. Now I can summarize several mistakes made, as below:
1. Failed to estimate accurately, or estimate, the actual business volumes, and directly referred to the technical schemes of JD.com or Taobao.com among other first-tier companies. The implementations are complicated and the technologies are too all-embracing.
2. Maybe it was because of lack of experience, there was no clear preliminary business planning, and high cohesion and low coupling were not taken into account in technology selection, leading to a too high dependency between systems which are hard to split as a result.
3. We chose some new technical frameworks by relying on one or two master technicians. Once the technicians resigned, we are all at sea. . .
4. Apart from the prevention of technical short slabs during preliminary purchase process, the product-centered marketing data streams are equally important. We need to increase the traffic to test the conversion rate and dynamic sales rate, and strive to increase the two rates. Once the conversion rate is stable, it is time to purchase large traffic volumes. All these require the data support for trails.
At last we summarized our discussions:
For fast launch, the architecture should meet the need, and avoid designing too many features. The useful technical stacks may include:
An e-business platform usually includes the client website system for the customers, the business system for the company (or third-party platforms), and the O&M platform (cloud platform).
The website system for the clients mainly comprises the following modules:
1. User Management System
2. Item Management System
3. Payment System
4. Order Management System
5. Evaluation System
The business system for the company (or third-party platforms) mainly comprises the following modules:
Personnel Management and Permission Management System
• Customer Service System
• Order Management System
• Financial Management System
• Item Maintenance System
• Statistical System
• Operation Support System
Note: The advantage of hardware solution is: Professional maintenance teams are in place to maintain these services, but at a high cost. The advantage of software solution is the low cost, but the open-source system may require you to find solutions on your own once a problem emerges.
The CTO will affect the technical development to a great extent.
CTO’s role in a startup company is unique. They not only take charge of development tasks for the business, but also handle the pressure from the outside (supervisors of other departments). Inside the department, they are also responsible for making reasonable arrangement of team members, and outside the department, they are responsible for development task arrangement and control. Meanwhile, CTOs tend to choose stable technologies they are familiar with. Startups may have many opportunities for trials-and-errors. But given the environment, the outside world won’t allow the team to make too many mistakes. So the technology selection, and even the technical direction of the company, is more dependent on the CTO’s technical expertise.
Problems during development
1. The O&M and launch problem is a big one because of the frequent iteration of startups.
At first, our solution was to directly replace the online environment with the modified class files, which is every dangerous. Later we established an automated deployment platform to perform automated code deployment based on Git and Jenkins.
2. Due to various reasons in the initial stage, the business logic coupling is high, and it costs a lot to develop a new business line.
This cannot be solved. We have to bear the consequences from our imperfect preparation. In the restructuring, we can try to separate the business gradually and adopt microservices for the architecture.
3. We didn’t separate the files and code in the system in the initial stage. With the increasing number of users, the server IO performance slows down.
Establish file servers to move all the files to the server, in a bid to reduce the stress of the web application server.
4. With the increasing orders, access to the background business system orders slows down.
First, check whether the access can be sped up by adding indexes, from the SQL optimization perspective. Second, calculate the read/write ratio to order-related tables and perform the database and table partitions. (At present, our teams haven’t achieved this step.)
5. The demands of the business party change too fast or the product lines are not clear, and every iteration becomes a pitfall.
This cannot be solved. First, you can find a product manager who is more familiar with the business. Second, you should involve developers of core businesses in the business personnel meetings to provide pertinent input on the demand or product development.
Our suggestions on building e-business platforms from scratch
1. Be familiar with the core business ideas and do not follow the herd and never say “This is what Taobao and JD do.” You need to build your platform according to your own products and businesses.
2. In technology selection, try to use open-source and stable solutions and do not choose a brand new technology.
3. In the preliminary stage, you can host the non-core data or services on a stable and reliable cloud service platform and focus your energy to completing and developing your core businesses and iterating your products. When the teams have accumulated some experience, you can choose to develop some services hosted on the cloud platforms.
4. Try to separate businesses as much as possible to facilitate later product restructuring.