In this post, I will introduce you to some of the handy developers tools provided by Sitecore OrderCloud to help you get up and running quickly with OrderCloud and Next.js. We will look at how to seed OrderCloud with some sample data, use the Console API to query the data, spin up an instance of the headstart-nextjs application and finally deploy the application to Vercel.Continue reading
In April 2021 Sitecore announced the completion of their acquisition of Four51 to enhance their ecommerce proposition. Four51 a technology solutions company that designs, develops, and delivers digital transformation through modern, customizable eCommerce, order management and B2B marketplace solutions powered by its MACH (Microservices based, API-first, Cloud-native and Headless) architecture eCommerce platform, OrderCloud. By moving towards MACH architecture, Sitecore are enabling you to take advantage of a composable approach to e-commerce.
OrderCloud is meant to be the backbone of your commerce operations as an API-first, headless platform.Continue reading
What Is OpenApi Spec?
OpenApi (OAS) is an API description format for REST APIs. An OpenAPI file allows you to describe your entire API, including:
- Available endpoints (/users) and operations on each endpoint (GET /users, POST /users)
- Operation parameters Input and output for each operation
- Authentication methods
What is Swagger?
Swagger is a set of tools most widely used implementing the OpenApi specification.
- Swagger Editor: Swagger Editor lets you edit OpenAPI specifications in YAML inside your browser and to preview documentations in real time.
- Swagger Codegen: Allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec.
- Swagger Parser: Standalone library for parsing OpenAPI definitions from Java
- Swagger Core: Java-related libraries for creating, consuming, and working with OpenAPI definitions
- Swagger Inspector (free): API testing tool that lets you validate your APIs & generate OpenAPI definitions from an existing API
- SwaggerHub (free and commercial): API design and documentation, built for teams working with OpenAPI.
Swagger CodeGen Api
The Swagger Codegen is an open source code-generator to build server stubs and client SDKs directly from a Swagger defined RESTful API. The source code for the Swagger Codegen can be found in GitHub.
In a previous post I gave a quick introduction to OBS, if you are not familiar with OBS, I highly recommend checking it out. In this post, I’ll show you how you can easily annotate while recording or streaming with OBS.
Often while presenting we will use a pointer to bring attention to an area on a slide or a smart board/whiteboard to help illustrate a concept or idea and further engage our audience. In my quest to provide the same experience while using OBS for recorded and streaming demos I discovered there are several tools available that enable you to write and draw on your display capture device.Continue reading
Earlier this year I took part in a Social Impact Hackathon organized by Valtech, CreateLabs, Contentful for the Henry Street Settlement in NYC. During the event I introduced OBS (Open Broadcaster Software) and shared some handy tips on how to get started using this awesome tool to improve your video content and/or presentations and client demos. I’ll share some of those tips over a series of posts starting with a quick intro.
What is OBS?
OBS is an open source video production and streaming application with a large community of developers. It can help you produce better quality recorded video and/streaming video content.
How could you benefit from using OBS? During the pandemic just about everyone has become familiar with video steaming services. Social distancing and lockdowns caused an unprecedented number of people to working or studying from home making services like zoom a household name in 2020.
This increased popularity of streaming video pointed out noticeable differences in quality. With the more professional-looking, having multiple camera angles, titling, effective lighting and crisp audio, VS other video streams consisting of one or more talking heads and poor audio. What’s the difference? Well it’s not exactly difficult to record and share a video of yourself these days. Most people can do it directly from their phone or laptop webcam. However, to produce professional looking recording requires a bit more time, and effort and some decent software to enhance the quality of your recording. That’s where OBS comes in as it can help make improve the quality of your video recordings, and presentations in general.
On my current Sitecore project our development team have adopted OBS to create short recordings to showcase each feature they have completed in the sprint. These are attached to the user story and then used in after Sprint Demo to showcase to the BA, QA and the client what has been completed in the sprint and how the new feature functions. This has the following benefits for the entire team:
- Developer – this acts as a confirmation check as they read through stories acceptance criteria and as part of the as part of the recording prior to demoing the feature. This helps confirm feature has indeed been implemented according the defined Acceptance Criteria and identifies any short comings or issues. Which can then be addressed. Developers gain confidence in creating recorded presentations. We’ve also found developers gain confidence and those that might be slightly introverted can significant confidence and are less intimidated presenting in front of the client. Prevents developers simply throwing features over the wire to QA without ensuring it functions as expected – not that they would.
- BA – This helps solidify features have been implemented according the Acceptance Criteria and identify any short comings or issues.
- QA – They can see exactly how a feature has been implemented, how to test it and where to go if they need to configure or change anything in Sitecore. Reduces the amount of communications back and forth.
- Program Management – gain confidence in what is being delivered and the quality.
- Client – They can see the progress without waiting for it to go through QA. Reaffirms that the feature functions and is designed as they had anticipated and provides an opportunity to provide feedback earlier in the lifecycle. Also as its recorded and attached to the user story so it can be re-visited when they start their UAT testing or if someone is unable to attend the after Sprint Demo meeting.
So there are occasions when working with a third party services you need to be able to develop and test against various scenarios and respond differently based on the response from that service. Controlling the response can be a challenge sometimes with service being outside of your control.
Thankfully you can easily fake the response with tools like fiddler. Fiddler is an awesome tool and has been around forever and has always had a spot in my developer utility belt.Continue reading
Having recently onboarded a developer onto a Sitecore project that utilizes Sitecore Commerce Connect, I thought it would be useful to share some that knowledge with the community. If you too find yourself starting a project that uses Commerce Connect, hopefully you’ll find this information helpful and allow you to hit the ground running quickly.
Sitecore Commerce Connect – What is it exactly?
Sitecore Commerce Connect is an e-commerce framework designed to integrate Sitecore with different external commerce systems and, at the same time, incorporate customer engagement functionality provided in the Sitecore Customer Engagement Platform.
It is supposed to act as an abstraction layer between your Sitecore implementation and the External Commerce System. The Commerce Connect Core by providing services and models to help implement basic commerce features such as cart, pricing, order, customer and catalog management.Continue reading
Sometimes you run into scenarios where you cannot reproduce a bug/issue locally and requires you to investigate the issue on actual server where your are experiencing the issue. Now as it is a higher environment you most likely don’t have the luxury or at least you shouldn’t have Visual studio running on this environment where you could easily debug.
Thankfully though with the right tools and access you can easily setup remote debugging and step through the code as if it were running on your local environment and hopefully shine some a light on the problem.Continue reading
In the previous post in this series on monitoring Sitecore containers I showed you how to instrument your Solr container, in this post, I’ll show you how to instrument the Sitecore SQL container and expose metrics for Prometheus to scrape.
There are several SQL exporters available in the Prometheus community some of these are SQL agnostic. Those that support MSSQL, either obtain their metrics via performance counters or by querying SQL directly. I recommend you review the different exporters and then choose an exporter that meets your specific requirements or you create your own custom exporter.
Lets take a look some of these exporters and see if they would be a good fit for exporting metrics from Sitecore SQL container.Continue reading
One of the challenges with having a pull model like Prometheus is that it needs to know where the targets are located so it can scrape the metrics. While we can configure static scrape targets in the Prometheus configuration file directly for our local environment I discovered anytime I want to make changes to these setting or add a new target I must restart Prometheus. This can be very annoying, as compared to my Sitecore containers, the Prometheus container takes much longer to stop and restart. So I needed to find a better solution for configuring these targets locally.
Service Discovery helps solve the problem of identifying scrape targets which is really useful in an orchestrated environment as it will dynamically discover targets. There is support for several common services like:
There are several other methods of Service Discovery supported by Prometheus:
<dockerswarm_sd_config>(scrape targets from docker swarm)
- <azure_sd_config> (scrape targets from Azure VMs)
- <sc2_sd_config> (scrape targets from AWS EC2 instances)
- <kuberenetes_sd_config> (scrape targets from kubernetes)