The backbone of any Internet of Things system is a robust cloud infrastructure. The cloud is used to:
- Collect information from, and send commands and configuration to, the Things (or devices) in the system;
- Provide an application platform to mobile and web clients;
- (often) Integrate with third-party Internet services, such as payment processing systems, information services providing weather predictions, social media platforms, and calendar apps; and
- Provide a store for data that can be analyzed (often in conjunction with other data from other sources) via Big Data statistical methods, thus making the entire system smarter.
Cardinal Peak has experience with all levels of development, from Kickstarter-level start-ups who are trying to quickly stand up their very first cloud server and are operating on a shoestring budget, to Fortune 500 companies who are launching products that need to support over 1M connected devices in the first month of operation.
Typical non-IoT cloud services usually revolve around basic database operations—for instance, users create, view, update and delete pictures and comments on social media sites, or browse a database of goods for sale and use a shopping cart and checkout workflow to transact a purchase. In contrast, while IoT systems still rely on the traditional cloud model for user accounts, they can require hundreds of thousands of connected devices communicating in a reliable, secure, and scalable fashion, and this creates different usage patterns and requires different system design.
When designing a cloud-based solution, Cardinal Peak starts by considering the APIs and endpoints necessary for communicating with the “Things” and the end-user apps. Integral with this are decisions on security. Is this a medical system that has HIPAA requirements? Is there sensitive financial information? Could someone determine where an individual is or whether their home is unattended? Layered into the communications architecture are decisions on scalability. Are there large files being transferred (video or audio)? How many concurrent users could the system experience?
With this information, we lay out a design that can scale and meet the customer’s needs as their product gains popularity. We also lay out a test plan that allows us to simulate the anticipated load on the servers to avoid the cost of producing hundreds of thousands of devices for load testing.
Cardinal Peak has extensive experience with implementation both traditional cloud services and cloud services for IoT application. Our added expertise in real-time systems, data processing, and algorithm design allow us to effectively tackle the challenges offered by an IoT product. Taken in total, these advantages lead to an easy to manage, easy to update, easy to expand system whose fixed costs are low.
- Java, Python, Node.js, Ruby on Rails
- NoSQL and relational databases, including MongoDB, Cloudant, DynamoDB, RDS, MySQL
- Scalable architectures using Amazon Web Services (AWS), including EC2, S3, CloudWatch, CloudFront
- RESTful APIs
- LAMP stack, Apache integration
- Network and System Security