Frequently asked questions
Click on a question to see the answer.
Does Spryker have features?
Yes. In the same way that iOS or MacOS do, Spryker as an operating system offers a range of features, called capabilities, which come in modules. These features can be either used as-is or extended; just as iOS offers its notepad and calendar apps as bases for other apps, the features can be used in their original state or taken as a basis and extended for individual use cases. As such, Spryker as an operating system offers both turn-key features and its own range of demo apps as bases.
What do you mean when you say "apps"?
By apps, we mean everything that is customer-facing.
An app could be, a B2C or B2B shop system, an Alexa voice skill, an order status update function. An easy repeat-order function could also be considered an app. So would a chatbot for customer service. Other examples would be, a native or web-based mobile customer interface, EDP interfaces and IoT installations. For example, communication between elevators or communication from an industrial saw requesting a replacement component or even a booking service are types of services and functionality that can be obtained through apps.
Can third-party items be integrated?
Yes. We refer to third-party integrations as industry partners, and they include services for payment, shipment, on-site search, recommendation engines, tracking, social, BI, loyalty, chat, and other services which can be integrated into the OS.
Which new trends does your OS support?
As vendors of an operating system, our task is to make it possible to develop apps as quickly as possible; as ROI timescales shorten increasingly and technological developments happen in ever quicker succession, it is difficult to look ahead even by 12 months. Spryker focuses on this and provides a starting point from which to develop applications in areas such as voice, chatbots, blockchain, AI and other areas.
What is Spryker's solution for omnichannel?
In our world, onmnichannel is a collection of apps in use, i.e. a webshop plus POS plus mobile as one possible combination. Within the operating system, we are trying to offer an increasing number of pre-installed capabilities and demo apps so that every customer can put it to work to reflect their own use case as quickly as possible. In order to avoid duplicating logic such as search, discount, payment etc. per individual channel, these items are offered by or stored in the operating system; this means significant improvement on cycles for building and testing customer-facing apps.
Is Spryker a shop system?
No. Spryker is an operating system for commerce. In our world, a B2C shop is only one of many apps; customers who only need one app will probably be able reach their goals faster with a standard, set-in-stone legacy system.
Do I need my own team or can I work with an agency?
The choice is all yours; you can do either. One way of proceeding is to divide up tasks neatly and work in the OS internally, using agencies to build specfic apps; alternatively, you could handle each app separately (i.e. agency builds webshop and you build voice/chatbot).
What are "Capabilities" in your OS?
Capabilities are modules such as PIM, cart, check-out, search, customer, stock, CMS, discount, order management, and another 170+ modules which are being continually added to in order for you to be able to build apps faster.
How expensive is the average Spryker project?
That depends entirely on the number of apps and on the type of app concerned. As a measure of best practice, it should be possible to build and deploy a single slimeline app for most standard use cases (i.e. a voice app for Alexa or a simple chatbot) within a few weeks. The aim is to keep each app simple and relevant, and to lock away as much of it in the OS as possible. This means that a standard, run-of-the-mill webshop does not take longer when using Spryker than with other systems. Spryker’s real strength, however, is the variety of apps. So building a B2C case with 4-5 apps (e.g. shop, web app, chatbot, voice, and POS) would, using a standard system, be a highly complex, very expensive, and frustratingly slow undertaking – and one that would stand in absolute contradiction with the overall architecture of the system applied. This kind of use case is part of Spryker’s DNA, however, and in IoT scenarios, Spryker is actually better than most other solutions due to the overall lack of dedicated technology.
How might an MVP look like?
All you need to do is define a new app from a business point of view and get started.
Is it possible to combine various tools and solutions?
Absolutely. You can use other tools for individual apps (e.g. the shop, EDI link-up) or swap out specific OS capabilities, e.g. replace the whole native OS PIM module with your own PIM solution.
How fast is Spryker’s technology?
Recent performance tests have shown 29ms front-end and 34ms back-end performance for a “Hello World” execution in a DevVM. Its speed is due to the separation of the front-end application and the back-end system, and its architecture design. Most information needed (e.g. products and CMS data) is served by the front-end and its fast KV storage; the back-end is only queried if more complex business logic is needed, like in cart calculation.
How scalable is Spryker’s technology?
Spryker is built to handle a huge amount of visitors. The software scales horizontally and vertically, so if you need more power, you can simply ramp up server capacity or deploy better hardware.
What makes Spryker stand out from competitors?
Spryker represents a new approach because it focuses not on having a huge amount of configurable – not changeable – features, but on IT productivity and business flexibility. The key promise is to increase the productivity and agility of the IT team allowing for a much leaner, trial-and-error oriented approach in development. A lot of today’s challenges like massive personalization, website speed, decoupled components, data driven approach, hyper-agility, multiple deployments a day are the industry’s best practices that have all been applied to Spryker.
How is Spryker connected to Project A ventures?
Project A Ventures is an investor in Spryker Systems along other investors who support and believe in our team, product and vision. How many Spryker shops are online? Spryker 2.0 was released as open code version in April 2016 with less than 10 customers live. Until then it was developed as “Yves and Zed” by Project A Ventures, which we call Spryker 1.0 and has 20 live customers today and the first learnings of Spryker are based on the Rocket Internet ecommerce history with version 0.5, internally called “Alice and Bob” with approx.. 100+ live customers.
How do we start with Spryker or how do we transform the Demoshop to out new shop?
To understand Spryker’s architecture and how to develop your product using Spryker, please follow the articles listed in the Spryker Academy’s Enablement section. Here you will tutorials and HowTos to help you get started with Spryker.
The tutorials cover topics such as:
Project Structure Overview
Extending Spryker Core functionality
How to add a new module
Extending the database schema
How can we import old customer data or order data?
Data migration refers to the process of transferring data from an old legacy system to a new system. This process must be planned in advance.
When preparing the data migration, identify the mapping between the entities defined in the legacy system and the ones defined in the new one. You can store these mappings in spreadsheets. You must define validation checks for extracted data and also acceptance tests that must be done after the migration process is completed.
Retrieve the data from the legacy system database : you can either use SQL or a data migration tool
Extract files containing data for each data source in turn
Run validation checks against the files containing the extracted data
Transform the extracted data so that it fits the new system’s database model.
Load the transformed data into the new database
Run acceptance tests
Does Spryker provide a Solution for hosting?
Hosting is not handled by Spryker. We have a list of system requirements and we provide all the information necessary to set Spryker up, but the rest is up to you. You can also engage with one of our hosting partners or follow the guidance and best practices from the ACADEMY regarding infrastructure.
Upon purchasing a Spryker license, will I have a ready-to-run shop or do I start from the scratch?
You will have a simple, ready-to-run shop and can start from there. The code is a great baseline for fast development, so you get pretty much everywhere pretty soon.
Am I able to launch an online shop internationally with Spryker?
Yes. Our architecture provides internationalization capabilities. One single shop can use integrated features like multi-language, but most customers will want to launch separate web shops in each country. Therefore, we have developed systematics that allow developers to create one basic shop system for all countries and optionally introduce customized behavior for each country. This minimizes development expenses, while still being able to meet individual demands.
How easy is it to integrate Spryker into an existing IT environment?
Spryker is made for an easy IT environment integration. There are several connection points so that you can write the APIs you need.
How long will my Spryker installation remain compatible with the main system?
Spryker consists of close to 100 feature modules that can be seen independently, so you can update a module if it hasn’t been changed and the connections to other modules stay the same. Nevertheless, you’ll have access to all future developments, from which you can pick and choose.
What is used between Yves amd Zed, is this pure RPX (no REST, SOAP)?
It is a pure RPC for internal usage. We decided to avoid the overhead of the standard web-service protocols because of performance reasons.
How is the data-base connected to the shop system?
The Zed system is connected with the underlying SQL database using an OR-Mapper, we rely on Propel as our default ORM.
How is front-end tracking data integrated into the data warehouse?
Web tracking is just another data source for the data warehouse.
Which technology is used for ETL processes in the data warehouse?
There is no specific tool, just a set of scripts that extract, transform, and load the data into the snowflake schema. It’s often faster.
Would Spryker work with a NoSQL database?
Yves already uses two NoSQL database which are Redis as KV storage and Elasticsearch as search engine. To persist the data Spryker uses a relational database (PostgreSQL as default) to keep the data structured and consistent. In some cases it makes sense to connect Zed to another NoSQL database like Couchbase or MongoDB which is of course possible.
Does Spryker support Master-Master replication?
Yes, the database server can be configured to support Master-Master replication. Database replication is the process by which a single data set stored in the database, will be live-copied to a second server.
Why do you prefer/use Propel over Doctrine? What are the exact advantages?
Propel is preferred to be used because it accomplishes good software with less code and it offers support to IDE to provide you intellisense. Propel is well integrated, fast and powerful.
Why do you use Redis and not Memcached?
Both Redis and Memcached are in-memory, key-value data stores. Both technologies are based on the same key-value data model and they both keep data in RAM, which makes them extremely useful as a caching layer. Both technologies solve the same problem, but Redis is newer and by using it you gain a lot of power. Redis superiority is evident on every aspect of cache management (the algorithms used by it are far more performant). Also, Redis gives you much greater flexibility regarding the objects you can cache and a larger size limit. But the most important aspect on choosing Redis over Memcached is that Redis offers replication. Replication is a proven solution that guarantees the cache’s contents and service availability.
How is it controlled which attributes are available in the search server?
The data stored in Elasticsearch is loaded via collectors job. The implementation for extracting, transforming and loading the data to Elasticsearch can be found in the ProductCollector class. The collector process consists of 2 steps :
createQuery – here you define the sql query that retrieves the data that needs to be loaded in Elasticsearch
processData – here you transform the retrieved dataset to fit the Elasticsearch structure
Can I use Solr instead of Elasticsearch as a search engine?
Each component in Spryker is decoupled and easy to replace. The Elasticsearch solution delivered with Spryker can be easily replaced with a new one.
Why do you use Elasticsearch over Solr, what is the advantage?
Both Elasticsearch and Solr are built on the Lucene search engine; Elasticsearch is a newer technology which already proved its capabilities and it gained a lot of attention. The focus of Elasticsearch is not only over the search functionality but more on extracting value from data in generally. Elasticsearch makes it easier to implement a large search system, being also a big data analysis solution.
How do you control which facets are provided for a category? How can this be overwritten?
The facets are configured in the FacetConfig class. They must be in line with the structure of the data loaded in Elasticsearch.
For more information read search.
How can I browse my Eleasticsearch indexes?
If you need to query Elasticsearch you can install Sense on your VM the following way:
run sudo /opt/kibana/bin/kibana plugin –install elastic/sense in your VM
restart your VM
Do you work with third-party providers for payment, e-mail, etc.?
Yes, we provide a set of interface implementations to work with different systems like payment providers, e-mail services, fraud prevention systems, etc. You can also check out our industry partner directory for recent integrations or Industry Partner Integration for best practices in integrating such 3rd parties.
As a third-party service provider, how can we work together with Spryker?
Just call us. We‘re happy to work with third party providers to get even better software.
How can the state machine e.g. be triggered by SAP (Web-service)?
You can find out more about modeling a sales order process in here. For integration with other systems you can setup a condition over a transition. This condition is checked when the check:condition cron job runs (it can check if a specific event took place)
Is there a set of APIs available to connect content systems to Zed?
Generally, we suggest that APIs are developed to a specific requirement to ensure error-free data transfers. Building this kind of customized API should be relatively easy and clearly easier than connecting specific systems to a generic API.
Why does Spryker use Silex as its front-end engine?
As a micro-framework, it is clean and easy to handle. The underlying Symfony ecosystem is widely accepted among developers, making it easy to customize and extend the capabilities of the front end as needed.
Could I replace Yves by my own front-end layer (e.g. Angular JS based front-end)?
Yes, you can choose any technology that you want for the front-end layer (AngularJS, React or Vanilla). This applies for CSS as well; you can use either Sass, LESS, Stylus or PostCSS.
Yves doesn't use full page cache, but isn't Yves - in a way - Zed's full page cache?
Yves and Zed are linked through an asynchronous connection, so that data is always up to date. Since data is never stored in Yves, the usual cold cache issues (outdated product availability, etc.) do not arise with Yves. We use Redis as a Key Value storage in combination with Elasticsearch. This guarantees us front-end performance of around 25-50 ms with a classical cache like e.g. Varnish while still maintaining full personalization abilities.
Where do I find further information?
Please check our our Academy for all technical topics.