Problems and challenges in Enterprise E-Commerce. How did the Virto Commerce project come about?

    In the modern world there is a huge number of E-Commerce solutions: from systems for creating small online stores to enterprise-level platforms. However, not all of them provide a technological advantage over competitors, which allows the E-Commerce project to develop and introduce new functionality faster, thereby constantly increasing sales and reducing costs.

    A technology platform that slows down fast changes and does not scale can lead to E-Commerce collapse in the face of fierce competition, where every little thing is important, which can increase sales conversions by a few tenths of a percent or at least slightly reduce advertising costs or service.

    Our more than ten years of experience in implementing international E-Commerce projects with attendance of tens of thousands of people per day for Fortune 500 companies showed that the main reasons for changing the platform for E-Commerce are:

    • Change of technology stack;
    • Loss of competencies (departure of the development team) - is especially typical for self-written, inhouse systems;
    • The difficulty of making changes;
    • Difficulty or inability to scale;
    • Current trends in the transition to the clouds.

    And, as a result - the appearance of a technological lag compared to competitors, which leads to the above business problems.

    What will our blog be about?

    This blog represents our experience in E-Commerce, which over time has grown into the VirtoCommerce project - an open source platform based on .Net and MS Azure, which includes the architecture and basic blocks for creating B2B or B2C Enterprise E-Commerce solutions.

    Creating projects for large ecommerce, as well as the platform itself, we acquired our own view on:

    • Agile development processes;
    • Quality control of the product;
    • Automation of DevOps processes (both during the development of the platform itself and in client projects);
    • Building a modern cloud IT infrastructure, which is necessary for corporate highly loaded E-Commerce solutions.

    In our blog you can find information on the following topics:

    • Our vision of Agile development processes;
    • Team structure and processes that we use during development;
    • Steps and developments for launching Pipeline in Jenkins to automate the assembly of more than 60 modules;
    • Using automatic E2E tests for quality control;
    • Results obtained in client projects and cases of large deployments;
    • Experience in using Azure services for various tasks;
    • The process of migrating an e-commerce project to the .NET Core platform.

    To read these publications with an understanding of what is at stake, let me tell you a little about who we work with and how we use the Virto Commerce platform.

    Who are enterprise e-commerce customers?

    Enterprise E-Commerce is very different from small and medium-sized online stores. Business processes that work with 10 or 100 orders per day will certainly not work with 1,000 orders per day or more. There are also differences that are caused not only by the volume of orders, but also by other difficulties:

    • B2B online sales that require the support of dozens of catalogs from different manufacturers and pricing models for them;
    • B2C stores operating in several countries with all the attendant features of placing orders, payment methods and delivery to different pages through different companies.
    • Stores with unique business processes, for example, coordinating the cost of the goods sold, depending on the volume online.
    • B2B-projects with a developed distribution system, franchising, etc.

    We encounter such clients regularly and it was under them that the basic functionality of our platform was originally written. Of course, enteprise is not only a special functionality, but also special loads. Among our customers there are many large online stores from the USA where the Black Friday promotion is held, when traffic can increase 10 or more times per day. This imposes increased demands on the platform resiliency for such projects, which we also provide for our customers.

    A little bit about the platform

    We aim to make our product as open and transparent as possible, which reduces the risks of its use. All the code of the platform and its modules, as well as the development process, is available in the public domain on GitHub .

    Code quality assessment results are also available in clear text on SonarQube .

    The platform is built on a modern technology stack from Microsoft: .NET Framework, .NET Core, Entity Framework, ASP.NET.

    We pay special attention to performance for enterprise e-commerce and select technologies based on this. For interactive user interactions, Angular is used, which is also open, well-known, and has a large community. Its modularity, the presence of a huge number of ready-made solutions and the use of MVC-architecture, in our opinion, with the right approach increases the speed of development. For quick full-text catalog search, ElasticSearch is used, which scales to petabytes of data, uses denormalization to improve search quality, is open and used in large projects, for example Wikipedia, GitHub, StackOverflow, etc.

    The platform supports the creation of multi-channel and multi-language solutions. As we said earlier, support for such functions is absolutely necessary in enterprise e-commerce projects, as they often sell in several countries at once.

    To work with B2B-commerce, which is often found in enterprise, it is possible to work with physical and virtual directories, which allow automatic compilation of the main catalog from the catalogs of manufacturers or suppliers, as well as introducing special pricing mechanisms.

    One of the main advantages of the platform, in our opinion, is its modularity, which gives high development speed, ease of scaling and increased fault tolerance. “Out of the box” there is a separation between client applications (Web Apps, Mobile apps, etc.) and the server side. All elements of the system are presented in the form of separate, independent modules, for example, catalog, pricing, basket, order, etc. ... When constructing a solution, you can decide which modules to use and which not. And, of course, to implement the missing functions, you can create your own module.

    Despite the fact that the platform can be deployed in different configurations, the maximum advantage is achieved when working in the cloud. We once chose Microsoft Azure. In this case, it becomes possible to use Azure services to increase the effectiveness of the entire solution:

    • Auto scaling
    • App Insights as a Monitoring Tool
    • Logic Apps (BizTalk Cloud Edition) for Integrations
    • Blob Storage + CDN for storing resources

    The capabilities of Azure already solve many potential problems with reliability and scalability, which excludes re-engineering. Even compared to native collocation, system performance is equivalent, and placing access points to the server closer to the client improves latency.

    On our blog you will find information on how, with the help of cloud hosting, we were able to withstand such serious loads as the increase in traffic 10 times a day during Black Friday / Cyber ​​Monday in the United States.


    Enterprise E-Commerce projects impose special conditions and requirements for the development platform. The ability to quickly develop, maintain inexpensively, simply change and have high fault tolerance is especially appreciated by customers. In our future articles, we will talk about how we implement enterprise e-Commerce projects using the Virto Commerce platform, what challenges we face and how we overcome them.

    Here is a short list of topics that we plan to cover soon on our blog:

    • Our vision of Agile development processes in practice
    • Team structure and processes that we practice in the development;
    • Description of their own CI, CD processes in the conditions of GitHub code storage of a large number of modules, as well as cloud deployment environments.
    • Using automatic E2E tests for quality control;
    • Results obtained in client projects and cases of large deployments;
    • Experience in using Azure services for various tasks;
    • The process of migrating an e-commerce project to the .NET Core platform.

    Also popular now: