We are going to develop our IoT Platform for 3 growing projects in following 3 verticals:
- Asset Tracking and Management
- Fleet Managemt
- Smart Farming
Our customer don't want to use general IoT platform such as AWS, Azure, IBM Watson and etc. and decided to develop our own IoT platform with following specification:
- Support HTTP, XMPP, COAP and MQTT
- Cooperable with general IoT Platform using APIs like AWS, AZURE, WATSON and etc.
- Device Management
- Handle 10K microservice per second at medium level of performance (max: 100K/sec)
- Being scalable to increase the performanece and reliablity
- Dashboarding (createcustomisable dashboards)
- FULL API documentation (cooperating with Android and IOS application)
- User MAnagement
It would be highly appreciated if anyone can help us to make a decision what kind of framework , what kind of server-side programming language (Java, PHP, Python ...) and what kind of DBMS (mysql, nosql, mangodb, ....) would be suitable to use?
To meet the requirements you mentioned for developing your own IoT platform, here are some recommendations for the framework, server-side programming language, and database management system (DBMS): Framework: Spring Boot: It is a popular Java framework that provides a powerful and flexible platform for building scalable and robust applications. It offers excellent support for building RESTful APIs, integrating with various protocols, and managing services. Server-side programming language: Java: It is a widely used and mature language with a vast ecosystem of libraries and frameworks. Java provides good performance, scalability, and reliability, making it suitable for handling high volumes of microservices and concurrent connections. DBMS: MongoDB: As a NoSQL database, MongoDB offers flexibility and scalability, which is beneficial for IoT applications that deal with large amounts of data. It allows you to store data in a document-oriented format and provides horizontal scaling capabilities to accommodate increasing data loads. Additional Recommendations: Message Broker: Consider using Apache Kafka as a message broker, which can handle high message throughput and provides fault-tolerant message processing for IoT data streams. Containerization and Orchestration: Docker and Kubernetes can help manage the deployment and scalability of your IoT platform, making it easier to scale services and ensure reliability. API Documentation: You can use tools like Swagger or OpenAPI to generate comprehensive API documentation for your platform, enabling easy integration with Android and iOS applications. Remember that these recommendations are based on the information provided and the general suitability of these technologies for IoT platforms. The final decision should consider your team's expertise, project requirements, and other specific factors unique to your organization. If you do not have a team capable of implementing such a project, it is worth contacting a team of specialists with experience in IoT projects https://tech-stack.com/services/internet-of-things
Ruby and Golang are great options. Both of these languages are versatile and boast a list of indisputable benefits. Ruby provides good support for data validation, libraries for authentication and user management, and more. Go is quickly changing for the best, providing more and more tools for mobile and web development and remarkably decreasing the time and costs of app development and support. To decide which is more suitable for your project, visit this page.
As for databases, I would opt for PostgreSQL. This database is especially suitable for financial, manufacturing, research, and scientific projects, as PostgreSQL has excellent analytical capabilities and boasts a powerful SQL engine, which makes processing large amounts of data easy and smooth. We used it in several projects and really enjoyed the convenience it brings.
AWS Lambda may be the best option for simple computations, analyzing sensors and sending alerts