Optimizing and Speeding Up Software Development for Pharmaceutical Companies

Optimizing and Speeding Up Software Development for Pharmaceutical Companies

Information
Region:
Germany, USA
Industry:
Healthcare
Type:
Web
Engagement model:
Time and Materials
Duration:
1 year 10 months
Staff:
Mid and Senior Full-stack Developers, Node.js Developer, DevOps Engineer
ID:
521
Technologies used
NodeJsScan
Semgrep
Kics
ESLint
Kubesec
ZAP
AWS
Node.js

Introduction

The company that worked with Elinext specializes in software development for pharmaceutical companies, which speeds up scientific research and drug discovery. The company developed a platform for automating work tracking carried out in laboratories, which improves laboratory and scientific research operations processes. Before Elinext, all the work for the platform had been covered by the in-house team. However, due to the constantly increasing amount of work with the platform and infrastructure, it became clear that the client needed outside help.

The client’s platform can be easily integrated and used both through the web interface and API and allows to:

  • Manage sample inventories;
  • Create and fulfill sample orders;
  • Manage stores and freezers;
  • Track sample transfers;
  • Configure and optimize Lab operations workflows;

Challenge

The main objectives that Elinext’s experts had when working on the project were to:

  • support all IT operations aspects of the company;
  • strive for innovation and evolution of the project’s cloud infrastructure;
  • collaborate on the continuous improvement of the project’s DevOps KPIs;
  • ensure compliance with the latest industry standards in terms of security and privacy.

There were some challenges that our developers had to overcome:

  • The pharmaceutical industry has high security standards. A lot of work was expected to be done to improve the security of the application (patches, updates, testing, etc).
  • Finding the balance between the speed of the CI/CD process and the price of the infrastructure involved.
  • Kubernetes platform ― an open-source platform for managing containerized workloads and services ― needed an upgrade, which implied reconfiguration of the whole self-hosted build process that would not disrupt the process of product development.
  • Proactive monitoring of the application was needed to discover possible bottlenecks that could hit back during application usage at scale.

Solution

The client’s in-house team has been using Agile methodology, so when Elinext’s DevOps engineer joined the client’s team, he started working within the existing process. He passed special training to learn the basics of scientific research of samples, mixtures, and so on and looked for the best way to implement the needed upgrades to the operations processes. First, he helped develop a branching strategy so that the team of developers could make the product and add features faster. Then, he took part in various aspects of development to make them more efficient, namely:

  • User access management
  • Project migration
  • Gitlab-runner configuration & enhancement
  • Gitlab-runner updates & troubleshooting
  • Optimization of pipeline (i.e. adjusting the number of steps, reducing execution time, etc.)
  • Adding schedule steps for maintenance purposes

During the time the Elinext team worked with the client, it made a number of updates:

  • Implementation of GitOps
  • Infrastructure as code (IaC) was fully described using Terraform, which allowed to significantly decrease the time to create and destroy new environments that had a single source of truth and were therefore idempotent.
  • Product changes caused evolutionary updates to the CI/CD pipeline, which included additional security tests (static application security tests (SAST), dynamic application security tests (DAST), secret detection, code security scanning, and image vulnerability scanning).
  • Continuous improvement of Helm charts that were used to deploy the application to AWS Elastic Kubernetes Service.
  • Enhanced monitoring was configured by means of Prometheus and Grafana stack featured by AWS Cloudwatch.

Result

The benefits the client saw as a result of Elinext’s work were significant. Application development got quicker, the platform became more stable and secure, and the delivery process became faster. There was a decrease in overall infrastructure costs and less time became required for operations-related work. CI/CD process optimization, eventually, reduced build, test, and deployment time by 15 minutes. Cost optimization of AWS services usage saved up to 2000 USD/monthly without any decrease in performance.

The Elinext team is made up of skilled developers who enjoy taking on tough projects. If you've got a project in mind, reach out to Elinext to find out more about our development services.

Enhancing Healthcare with Innovative Software Solutions

Web Design for a Healthcare Company Automation QA for Healthcare Data Privacy Healthcare Data Anonymization Platform Healthcare CRM System Patient Portal for a Healthcare Company Code Optimization for a Biopharmaceutical Company in Germany
1-141
Do you want the same project?
Got A Project Idea? Lets Discuss It With Us
Contact Us

    • United States+1
    • United Kingdom+44
    • Afghanistan (‫افغانستان‬‎)+93
    • Albania (Shqipëri)+355
    • Algeria (‫الجزائر‬‎)+213
    • American Samoa+1
    • Andorra+376
    • Angola+244
    • Anguilla+1
    • Antigua and Barbuda+1
    • Argentina+54
    • Armenia (Հայաստան)+374
    • Aruba+297
    • Ascension Island+247
    • Australia+61
    • Austria (Österreich)+43
    • Azerbaijan (Azərbaycan)+994
    • Bahamas+1
    • Bahrain (‫البحرين‬‎)+973
    • Bangladesh (বাংলাদেশ)+880
    • Barbados+1
    • Belarus (Беларусь)+375
    • Belgium (België)+32
    • Belize+501
    • Benin (Bénin)+229
    • Bermuda+1
    • Bhutan (འབྲུག)+975
    • Bolivia+591
    • Bosnia and Herzegovina (Босна и Херцеговина)+387
    • Botswana+267
    • Brazil (Brasil)+55
    • British Indian Ocean Territory+246
    • British Virgin Islands+1
    • Brunei+673
    • Bulgaria (България)+359
    • Burkina Faso+226
    • Burundi (Uburundi)+257
    • Cambodia (កម្ពុជា)+855
    • Cameroon (Cameroun)+237
    • Canada+1
    • Cape Verde (Kabu Verdi)+238
    • Caribbean Netherlands+599
    • Cayman Islands+1
    • Central African Republic (République centrafricaine)+236
    • Chad (Tchad)+235
    • Chile+56
    • China (中国)+86
    • Christmas Island+61
    • Cocos (Keeling) Islands+61
    • Colombia+57
    • Comoros (‫جزر القمر‬‎)+269
    • Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)+243
    • Congo (Republic) (Congo-Brazzaville)+242
    • Cook Islands+682
    • Costa Rica+506
    • Côte d’Ivoire+225
    • Croatia (Hrvatska)+385
    • Cuba+53
    • Curaçao+599
    • Cyprus (Κύπρος)+357
    • Czech Republic (Česká republika)+420
    • Denmark (Danmark)+45
    • Djibouti+253
    • Dominica+1
    • Dominican Republic (República Dominicana)+1
    • Ecuador+593
    • Egypt (‫مصر‬‎)+20
    • El Salvador+503
    • Equatorial Guinea (Guinea Ecuatorial)+240
    • Eritrea+291
    • Estonia (Eesti)+372
    • Eswatini+268
    • Ethiopia+251
    • Falkland Islands (Islas Malvinas)+500
    • Faroe Islands (Føroyar)+298
    • Fiji+679
    • Finland (Suomi)+358
    • France+33
    • French Guiana (Guyane française)+594
    • French Polynesia (Polynésie française)+689
    • Gabon+241
    • Gambia+220
    • Georgia (საქართველო)+995
    • Germany (Deutschland)+49
    • Ghana (Gaana)+233
    • Gibraltar+350
    • Greece (Ελλάδα)+30
    • Greenland (Kalaallit Nunaat)+299
    • Grenada+1
    • Guadeloupe+590
    • Guam+1
    • Guatemala+502
    • Guernsey+44
    • Guinea (Guinée)+224
    • Guinea-Bissau (Guiné Bissau)+245
    • Guyana+592
    • Haiti+509
    • Honduras+504
    • Hong Kong (香港)+852
    • Hungary (Magyarország)+36
    • Iceland (Ísland)+354
    • India (भारत)+91
    • Indonesia+62
    • Iran (‫ایران‬‎)+98
    • Iraq (‫العراق‬‎)+964
    • Ireland+353
    • Isle of Man+44
    • Israel (‫ישראל‬‎)+972
    • Italy (Italia)+39
    • Jamaica+1
    • Japan (日本)+81
    • Jersey+44
    • Jordan (‫الأردن‬‎)+962
    • Kazakhstan (Казахстан)+7
    • Kenya+254
    • Kiribati+686
    • Kosovo+383
    • Kuwait (‫الكويت‬‎)+965
    • Kyrgyzstan (Кыргызстан)+996
    • Laos (ລາວ)+856
    • Latvia (Latvija)+371
    • Lebanon (‫لبنان‬‎)+961
    • Lesotho+266
    • Liberia+231
    • Libya (‫ليبيا‬‎)+218
    • Liechtenstein+423
    • Lithuania (Lietuva)+370
    • Luxembourg+352
    • Macau (澳門)+853
    • Macedonia (FYROM) (Македонија)+389
    • Madagascar (Madagasikara)+261
    • Malawi+265
    • Malaysia+60
    • Maldives+960
    • Mali+223
    • Malta+356
    • Marshall Islands+692
    • Martinique+596
    • Mauritania (‫موريتانيا‬‎)+222
    • Mauritius (Moris)+230
    • Mayotte+262
    • Mexico (México)+52
    • Micronesia+691
    • Moldova (Republica Moldova)+373
    • Monaco+377
    • Mongolia (Монгол)+976
    • Montenegro (Crna Gora)+382
    • Montserrat+1
    • Morocco (‫المغرب‬‎)+212
    • Mozambique (Moçambique)+258
    • Myanmar (Burma) (မြန်မာ)+95
    • Namibia (Namibië)+264
    • Nauru+674
    • Nepal (नेपाल)+977
    • Netherlands (Nederland)+31
    • New Caledonia (Nouvelle-Calédonie)+687
    • New Zealand+64
    • Nicaragua+505
    • Niger (Nijar)+227
    • Nigeria+234
    • Niue+683
    • Norfolk Island+672
    • North Korea (조선 민주주의 인민 공화국)+850
    • Northern Mariana Islands+1
    • Norway (Norge)+47
    • Oman (‫عُمان‬‎)+968
    • Pakistan (‫پاکستان‬‎)+92
    • Palau+680
    • Palestine (‫فلسطين‬‎)+970
    • Panama (Panamá)+507
    • Papua New Guinea+675
    • Paraguay+595
    • Peru (Perú)+51
    • Philippines+63
    • Poland (Polska)+48
    • Portugal+351
    • Puerto Rico+1
    • Qatar (‫قطر‬‎)+974
    • Réunion (La Réunion)+262
    • Romania (România)+40
    • Russia (Россия)+7
    • Rwanda+250
    • Saint Barthélemy+590
    • Saint Helena+290
    • Saint Kitts and Nevis+1
    • Saint Lucia+1
    • Saint Martin (Saint-Martin (partie française))+590
    • Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)+508
    • Saint Vincent and the Grenadines+1
    • Samoa+685
    • San Marino+378
    • São Tomé and Príncipe (São Tomé e Príncipe)+239
    • Saudi Arabia (‫المملكة العربية السعودية‬‎)+966
    • Senegal (Sénégal)+221
    • Serbia (Србија)+381
    • Seychelles+248
    • Sierra Leone+232
    • Singapore+65
    • Sint Maarten+1
    • Slovakia (Slovensko)+421
    • Slovenia (Slovenija)+386
    • Solomon Islands+677
    • Somalia (Soomaaliya)+252
    • South Africa+27
    • South Korea (대한민국)+82
    • South Sudan (‫جنوب السودان‬‎)+211
    • Spain (España)+34
    • Sri Lanka (ශ්‍රී ලංකාව)+94
    • Sudan (‫السودان‬‎)+249
    • Suriname+597
    • Svalbard and Jan Mayen+47
    • Sweden (Sverige)+46
    • Switzerland (Schweiz)+41
    • Syria (‫سوريا‬‎)+963
    • Taiwan (台灣)+886
    • Tajikistan+992
    • Tanzania+255
    • Thailand (ไทย)+66
    • Timor-Leste+670
    • Togo+228
    • Tokelau+690
    • Tonga+676
    • Trinidad and Tobago+1
    • Tunisia (‫تونس‬‎)+216
    • Turkey (Türkiye)+90
    • Turkmenistan+993
    • Turks and Caicos Islands+1
    • Tuvalu+688
    • U.S. Virgin Islands+1
    • Uganda+256
    • Ukraine (Україна)+380
    • United Arab Emirates (‫الإمارات العربية المتحدة‬‎)+971
    • United Kingdom+44
    • United States+1
    • Uruguay+598
    • Uzbekistan (Oʻzbekiston)+998
    • Vanuatu+678
    • Vatican City (Città del Vaticano)+39
    • Venezuela+58
    • Vietnam (Việt Nam)+84
    • Wallis and Futuna (Wallis-et-Futuna)+681
    • Western Sahara (‫الصحراء الغربية‬‎)+212
    • Yemen (‫اليمن‬‎)+967
    • Zambia+260
    • Zimbabwe+263
    • Åland Islands+358

    Insert math as
    Block
    Inline
    Additional settings
    Formula color
    Text color
    #333333
    Type math using LaTeX
    Preview
    {}
    Nothing to preview
    Insert