A Developer needs Help πŸ™πŸ½ How to Optimize a Development Environment for Remote Server Sessions: Enhancing Performance, Security, and Scalability.

NabiL Ashabt 0 Reputation points
2024-01-03T10:24:48.5966667+00:00

Note: I am not an IT expert, and I am trying to solve this problem on my own due to current challenges in my company. I am open to any constructive feedback and suggestions. Thank you.

I am a developer working on a project that requires connecting to the company server remote session (Windows Server 2019). The current setup is as follows (hypothetically):

  • We have one physical server with 16 cores, 64 GB RAM, and 1 TB SSD.
  • The server hosts four VMs (in real use case, they are more than that), each with 4 cores, 16 GB RAM, and 250 GB SSD. The VMs run different systems that we develop, such as Switch, Wallet, etc.
  • We have 20 client computers that are zero clients, meaning they have no local storage or processing power. They only act as terminals to access the server from a server-like interface.
  • We use a web-based interface to log (not sure about that description, I never saw or used st. like that before) in to the server with our credentials. The interface allows us to select the VM that we want to connect to based on the system we work on.
  • After logging in, we are introduced with a normal Windows Remote Session that acts like users logins interface, meaning all the users login from this shared Windows Session. Form there, we finally login into the real Remote session to start developing! The environment consists of Visual Studio, VS Code, SQL Server, Git, and other tools that we need.

The problem with this approach is that it is very resource-intensive and slow. We often experience lag, latency, and connection issues when working on the remote session. The server CPU and RAM usage are always high, and the network bandwidth is limited (it is roughly blocked and monitored by Fortinet firewall, with a very limited and restricted access to the web). We also have security concerns about storing our source code and data on the server, this is why network is disabled or limited in development environments.

We are looking for a better way to connect to the server remote session that can improve the performance, scalability, security, and cost of our development environment. Some of the goals and requirements that we have are:

  • Reduce the server load and network traffic (not as critical as server load!) by moving some of the processing and storage to the client side maybe, or st. else.
  • Enable faster and smoother development workflows, such as coding, debugging, testing, deploying, etc.
  • Ensure the security and integrity of our source code and data, and prevent unauthorized access or leakage.
  • Minimize the cost and complexity of maintaining and upgrading the server and the VMs.

We have tried horizontal and vertical scaling, but they did not solve the problem. From my understanding (Horizontal scaling means adding more servers and VMs), but this increases the cost and complexity of managing them. (Vertical scaling means upgrading the server and the VMs with more resources), but this has diminishing returns and does not address the network bottleneck.

Is there a better method or solution that can meet our goals and requirements? We are open to any suggestions or recommendations, such as using different tools, technologies, or architectures. Thank you for your help.

Windows for business | Windows Server | User experience | Other
0 comments No comments
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.