Enterprise Data Repository SaaS (EDR SaaS)
Enterprise Data Repository will offer a centralized solution to share the engineering data between disparate engineering software components. The uploaded data will be annotated with metadata information to support later search and share capabilities.
Design EDR as a collection of services which can efficiently communicate and automatically scale.
(Microservice examples: Publish Service, Search Service, Model Structure Service, Health Monitoring Service etc.)
The design should respect the 12 Factor App Principles. A minimum viable product (MVP) will be built. The services composing the SaaS should be encapsulated in container technology which will offer the possibility to run the app on any Cloud provider or On-premise infrastructure. EDR SaaS application will be accessible over Internet/Intranet.
As any SaaS model, it should have the following key characteristics:
- Multitenant Architecture (multiple users and applications share a common source code which is maintained centrally in one location)
- Customization (application customizations can easily be managed and maintained per customer)
- Accessibility (easier to manage privileges or monitor data usage and the same information is available to all users at any point of time)
The EDR SaaS application should address the following concerns:
- Scalability (adaptable to the changing needs or demands of its users or clients)
- Security
- Failover issues (Failover is the constant capability to automatically and seamlessly switch to a highly reliable backup. The main purpose of failover is to eliminate, or at least reduce, the impact on users when a system failure occurs.)
- Integration and Compatibility with Other Systems (integration with other enterprise-level tools)
- Automated Tests and Code Quality: the chosen architecture should facilitate the integration of automated tests into the development process which significantly reduces the number of non-compliant pieces of code and bugs.
- A Continuous Integration (CI) Environment to Ensure Continuous Delivery: One of the main advantages SaaS has over on desktop software is that updates, security and patches, and new features can be released to users in a much easier and more timely fashion.
Technology Stack (Java oriented):
- Java 10
- Spring Framework (Spring Boot, Spring MVC, Spring Cloud <Ribbon, Zuul, Eureka, Hystrix>, Spring JMS, Spring AOP, Spring JPA, Spring JTA, Spring Security)
- Other Frameworks: Testing (JUnit 5, Cucumber, Mockito, Arquillian), Messaging System (RabbitMQ, ActiveMQ, Kafka)
- DataBase: Relational DB (PostgreSQL, MySql, MS SQL Server, Oracle), Document DB (MongoDB)
- Communication architectures: REST, gRPC, Message Driven, Socket/WebSocket
- Maven (or Gradle)
- Containerization solutions: Docker with Kubernetes (or Docker Composer), TimeSeries DB (Cassandra),
- Cloud Provider: AWS, Azure, Cloud Foundry, MindSphere
- Source control: Mercurial/Git
Internship details: Siemens Brasov, spend at least 6 weeks on location
Apply to: cristi.irimia@siemens.com