We are looking for motivated and dynamic employees to join our national and international projects. In return we offer an interesting and versatile field of action. If you like working in small teams with high individual responsibility and enjoy representing your ideas with confidence, we are looking forward to your application.
Our unit develops various software and IT solutions. As part of the international team you will be responsible for developing a software that will be used all over the world.
For our teams working on multinational projects looking for
- What we have now:
-Our current communication servers are windows services that bind and listen on specific TCP ports for device communication, via sockets
-At this moment, each device message received is being processed, then the device receives back an ACK message from the server
The biggest problem is that the processing can take a long time and if the device does not receive the ACK in time, it re-sends the original message.
This can cause delays in processing, exponentially increasing processing time by processing the same message multiple times and even block the service and potential loss of messages on restart.
- What we want to build:
-We want to rewrite these communication services using a scalable microservice approach.
This means that we want to break each “service” into listeners that take the device messages and sends them in a persistent queue system (Rabbit MQ for example) and several consumers processes that take relevant messages from the queue and process them asynchronously.
Each message can result in a list of: points, events, alerts, etc., after the processing is done.
Not all of these need to be real time, points and events having priority.
- Who are we looking for:
- We are looking for a skilled programmer that with our help will develop this new system which consists of:
- TCP listeners that can receive 2000+ messages / second / port and puts the messages in a queue along with metadata regarding the port and device that sent the message
- The listener should send the correct ACK message back to the device for each message that is put in the queue (each device has a protocol that defines the structure of the messages sent and the format of the ACK message expected)
- Message processors that take the messages from the queue(s) and based on the sending device protocol, break the messages into various entities that are persisted into the DB: points, events, alerts, etc.
- This architecture must be resilient to errors and scalable so that if a device starts sending erroneous messages, the system does not crash
- Must have skills:
- Must know the following programming languages: C#, SQL
- Be comfortable with .NET Core, SQL Server, GIT
- Network programming (TCP using sockets, client-server architecture)
- Multi-threading and thread synchronization in C#
- Nice to have skills:
- Alternatively, we were open to using Node.js for implementing the TCP listeners
- You will work closely with our development team and receive support for understanding the current implementation of the system and building, deploying and testing of the new system
- We work using the SCRUM framework so you will be expected to participate in daily and weekly meetings with the team to discuss the progress and impediments that you encounter
- To use the provided tools like JIRA / Confluence for ticket management and writing documentation
- You will be expected to write clean and documented code and also write unit tests to assure that the code works correctly after changes
- You must be self-organized and proactive by coming up with ideas of how to improve the system and not just expect to complete tasks assigned to you
- The code will be submitted regularly to our GIT repository and code reviews will be performed to ensure a high standard of quality and eliminate possible bugs before testing
- About us:
- Great location
- International projects
- Work from home
- Flexible hours
- Professional growth, state of the art projects
- Smart, joyful team environment
- We care about your work/life balance
- Career plan
- Performance evaluation
- Hands-on training
- Premium Medical insurance
- Lunch tickets
- Competitive salary
Join our team!
Contact us and let's discuss about your professional evolution with us!
email@example.com or https://www.linkedin.com/in/anabart/
firstname.lastname@example.org or https://www.linkedin.com/in/luiza-florian-32144514...