Expert Guide to IntelliJ License Server
Engineering teams need to distribute licenses among existing developers, provide licenses to new developers as they come on board, and revoke licenses from developers as they leave or switch to a different technology stack.
Join the DZone community and get the full member experience.Join For Free
JetBrains is a world-class vendor of developer tools that are loved by millions of geeks. IntelliJ IDEA, ReSharper, PhpStorm, PyCharm, and WebStorm are all JetBrains products that have become household names in their respective developer communities.
As development teams grow and get more diverse, companies start to purchase more subscriptions to JetBrains tools. However, buying subscriptions is just the first step. Engineering teams need to distribute licenses among existing developers, provide licenses to new developers as they come on board, and revoke licenses from developers as they leave or switch to a different technology stack.
License distribution takes time and effort, and neglecting license management leads to confusion, downtime, and overspending.
Fortunately, JetBrains provides a set of tools that take the pain away from license management. One of these tools is JetBrains Floating License Server.
If you are an engineering manager or CTO in an organization using JetBrains tools, this guide is for you. Here’s what we’ll cover in this comprehensive guide to JetBrains License Server:
- A quick summary of what JetBrains License Server is
- Reasons to consider using License Server
- Common development team scenarios that License Server addresses
- Your next steps, if you decide that your company needs to use License Server
What Is JetBrains License Server?
JetBrains Floating License Server (sometimes called “IntelliJ License Server” or just “License Server”) helps dynamically distribute licenses between JetBrains products used in your company. This means you do not need to issue and revoke licenses manually.
License Server gives you better control over product usage with features such as whitelists, blacklists, and priority lists. Additionally, it monitors the adoption of JetBrains tools in your company, letting you know how many licenses are currently in use, and how many are available.
License Server is a free on-premises application that you can install in your company’s internal network. It’s available to companies that have 50+ commercial subscriptions to any JetBrains products that are part of All Products Pack, namely:
- Integrated development environments: IntelliJ IDEA Ultimate, WebStorm, PhpStorm, PyCharm, Rider, CLion, GoLand, DataGrip, RubyMine, and AppCode.
- Visual Studio extensions: ReSharper, ReSharper C++, and dotCover.
- Profilers: dotTrace and dotMemory.
Finally, License Server has recently started to support licenses to third-party plugins to JetBrains tools that are distributed via the JetBrains Marketplace. However, it does not support JetBrains team tools such as YouTrack, TeamCity, or Space.
If you work at a company with fewer than 50 commercial subscriptions, you’ll need to manually assign and revoke licenses. It’s recommended to look at JetBrains Account and see what it can do in terms of license management.
Why Would Your Company Need License Server?
If your company has a stable in-house developer workforce where each developer uses only one JetBrains product, you may not need License Server at all. However, License Server gets increasingly useful when:
- Demand for licensed JetBrains tools changes over time
- Many users only need part-time access to JetBrains tools
- Developers often switch between different code bases
- Your company uses contractors, consultants, or temporary employees
Let’s consider a few typical scenarios for License Server usage.
Use Case 1: One JetBrains Product Is Used Every Day, Other Products Are Used as Needed
Let’s say that each developer on your team uses one JetBrains tool as their primary development environment but occasionally uses different JetBrains tools. For example, on .NET development teams, it’s common for developers to use the following setup that includes multiple JetBrains tools:
- JetBrains ReSharper is used with Microsoft Visual Studio for regular development activities like reading, writing, debugging, and refactoring code.
- JetBrains dotTrace (performance profiler) and dotMemory (memory profiler) are used sparingly to investigate occasional performance problems or memory leaks.
If all developers on a team use All Products Pack or dotUltimate subscriptions, they’re covered for both ReSharper and profilers. But if the company’s procurement practices are focused on cost savings, this may not be the case. For example, if a team has 70 developers, it may have:
- 65 ReSharper subscriptions (ReSharper is included, profilers are not).
- 5 dotUltimate subscriptions (both ReSharper and profilers are included).
In a setup like this, how can you make sure that when a performance problem or memory leak occurs, any developer can use dotTrace or dotMemory?
- Without License Server: Licenses that include the profilers would be provided to a fixed group of five developers, and you’d have to manually reassign licenses using JetBrains Account.
- With License Server: Any developer who wants to use a profiler to investigate a performance problem can do it without any administrative overhead. They simply launch dotTrace or dotMemory, and License Server takes care of selecting the license that includes the profiler.
This setup only works as long as profilers are used by no more than five developers at the same time. But if concurrent profiler usage grows, you can buy additional dotUltimate subscriptions.
Use Case 2: Splitting Time Between New and Old Codebases
A related scenario is when a team writes a new application while maintaining a legacy application, and the two applications use different tech stacks. For example, let’s say the new application is developed in Node.js and React, and the legacy application uses Spring Boot.
Developers spend most of their time developing the new application in JetBrains WebStorm. From time to time, they need to update the legacy application’s codebase for maintenance purposes, and they use IntelliJ IDEA for this. Do all developers on the team need both WebStorm and IntelliJ licenses? Probably not. Instead, you can:
- Provide all developers with WebStorm licenses for their main line of work.
- Add a few IntelliJ licenses to maintain the legacy application.
- Make the licenses available via IntelliJ License Server so that whoever occasionally needs IntelliJ IDEA can automagically obtain a license.
As soon as a maintenance task on the legacy codebase is completed and the developer closes PhpStorm, the license returns to the license pool and becomes available for use by any other developer.
Use Case 3: Providing Licenses to Part-Time Users
Another related scenario is provisioning licenses to employees who aren’t exactly full-time developers. For example, your team might have:
- DevOps engineers who use a repository of automation scripts that are stable and don’t need regular maintenance.
- Product Marketing Managers who change the copy on your website once in a while.
- Security experts who are mostly focused on code review but sometimes need to refactor pieces of vulnerable code.
Having a License Server with a few JetBrains All Products Pack licenses available to these employees will help you reduce costs. Rather than purchasing licenses for each of them, you reassign the existing licenses to team members as they need them.
Use Case 4: Providing Licenses to Contractors, Consultants, or Interns
Even engineering teams with in-house developers might send some development tasks to freelance contractors. This is quite common when you need temporary help on a project or extra hands to help get a product to launch faster.
When you find a contractor, you may want to give them access to your VCS repository and provide them with JetBrains tools so they can effectively work with the rest of your team. If you take this approach, give them a link to your IntelliJ License Server so that they can use your company’s licenses.
When their contract expires, you simply revoke access to your License Server (along with any other internal resources that you make available to contractors). The license then goes back to the pool, ready to be used by the next freelancer you bring on board.
Similarly, you can use License Server to provide licenses to students who join your company for summer internships. In this scenario, the students come in batches and spend a few months on their projects. By using IntelliJ License Server, it takes a bit of an administrative burden off you.
Common Questions About JetBrains Floating License Server
Q: What impact does remote work have on using License Server? Is it more or less important for distributed teams and why?
A: Remote work is unlikely to be a factor in your decision to use License Server. Whether developers are co-located or distributed, they usually connect to a corporate VPN anyway – which is where License Server is usually set up for them.
Q: Is there a SaaS version of License Server?
A: Not right now, although based on this job opening, JetBrains is considering a SaaS version of License Server in the future. Integrating its functionality into JetBrains Account feels like the most natural path forward.
Q: My company uses IntelliJ License Server to manage pre-subscription JetBrains licenses purchased before 2015. Is this the same thing?
A: No, the current version of License Server is very different. See this deprecation notice for more details.
Make sure to also check out the FAQ section in JetBrains License Server docs.
Setting Up JetBrains Floating License Server
JetBrains does a great job documenting how to install, configure, and maintain License Server. Instead of diving deep into this, I’ll give you a quick checklist of the major steps you need to make IntelliJ License Server available in your company.
- Contact the JetBrains Sales team to enable License Server for your company’s JetBrains Account.
- If your company’s hardware meets system requirements (make sure you check out both Windows and Linux/macOS requirements), install and start License Server.
- Register your License Server with your company’s JetBrains Account.
- Add licenses from JetBrains Account to License Server.
- Configure usage reporting and notifications.
- Let your developers know that they can now use License Server.
Once developers have access to your server, they’ll need to configure each of their JetBrains products with License Server.
License Server Configuration
Anyone on your team can now start a supported JetBrains product and configure it to fetch licenses from your License Server installation.
Let’s see how to do this in PyCharm, IntelliJ IDEA, or any other JetBrains IDE:
- On the main menu, select Help | Register.
- Set Get license from: to License server.
- If you know the URL of your company’s License Server, paste it into the Server address: field. If you don’t, click Discover Server to make PyCharm lookup License Server on your local network.
- Click Activate.
For a more detailed procedure, see the Register section of your JetBrains IDE documentation. This page also shows you how to configure License Server discovery for silent IDE installations.
The process is slightly different for other JetBrains tools. Here’s how you make ReSharper, dotTrace, or dotCover connect to JetBrains License Server:
- On the main menu, select ReSharper | Help | License Information.
- In the License Information dialog, select Use license server.
- ReSharper will try to auto-detect your License Server, but if it fails, click the + icon to specify your License Server’s URL.
For more details, see License Information dialog and Specify License Information in ReSharper docs. Among other things, the latter article describes differences between floating and permanent license tickets. Permanent tickets are useful if you need to use JetBrains products without a steady connection to your License Server (for example, if you’re about to catch a flight).
JetBrains Floating License Server is a great free tool for streamlining license distribution in large development teams.
License Server is worth exploring if your company uses 50 or more subscriptions to JetBrains IDEs, extensions, profilers, or third-party plugins and you want to stop thinking about provisioning licenses every time someone joins or leaves a team.
Even if your company doesn’t qualify for License Server yet, don’t forget to check out what JetBrains Account can do for you. It can help you with other license-management tasks like bulk-assigning licenses, revoking and reassigning licenses, and managing auto renewals.
Published at DZone with permission of Jura Gorohovsky. See the original article here.
Opinions expressed by DZone contributors are their own.