Avatar of Palaash Atri

Palaash Atri

Quality Engineer I at Azul Systems
Quality Engineer I at Azul Systems·

Now I am not a 100% certain on what your startup would be producing, but I am assuming based on a lot of in-the-wild examples I have seen in my past couple years as an engineer, and can recommend you a general stack that should work fine for you at minimal cost (bar HIPAA, I don't know much about it, and someone else, more experienced would answer it better):

  1. Cloud: Cloud costs are more or less the same throughout the major players, and since I prefer things to be developer friendly, I would prefer using Microsoft Azure to handle your architecture. Azure provides a lot of services out of the box, with good, developer friendly SDKs and documentation, which would mean less hassle for you to learn (or train) any further joinees.

  2. Git: Use GitLab, because you can use it to have an on-prem deployment over on your Azure stack, and can easily integrate CI/CD tools to it, since it is open source and has a plethora of integrations with major CI/CD tools

  3. Tasks Management: Use Azure ADO Boards, provided through your Azure subscription

  4. Programming Language: I have found Spring Boot (Java) + Angular (TypeScript) to be a combination that just works, given there's almost an infinite amount of free documentation available for them to create, test and deploy RESTful microservices, but MERN/MEAN is also amazing for any startup. You can use MariaDB, PostgreSQL, MongoDB etc. as your database, since Azure has good support for all of them, but choosing between SQL/NoSQL is dependent on how you are structuring and storing your data, and I'd recommend doing an architecture review of it first.

  5. HIPAA: sorry, no idea!

  6. CI/CD: Azure provides ADO Pipelines, GitLab also has its own CI/CD tools, and also allows integration with industry standard tools like Jenkins, Hudson etc.

  7. Testing Suites: Depends on what stack you would be choosing, but then again, industry standards are JMeter, Postman etc.

  8. IDEs: I have always found IDEs to be a "developer preference". I personally use both Eclipse and Visual Studio Code, one for Java and the other for Python, Node.js, YAML, Bash scripting etc. But, Visual Studio Code has a plethora of extensions that make it a fully-fledged IDE.

READ MORE
8 upvotes·1 comment·36.7K views
Srikanth Gopalakrishnan
Srikanth Gopalakrishnan
·
March 25th 2023 at 4:40AM

Cloud: You could also check out simpler providers like fly.io or linode (recently aquired by akamai).

IDE: Has to be VSCode. Everything else is a memory intensive resource hog.

Programming Language: Python is great to build backends at the moment. FastAPI will get you far. All the others are deprecated imho. If you have the time, go for a rust backend. But it can be a bit complex.

Tasks Management: Check out Bugasura.io or clickup.com . Please don't use Jira, it is dog sh1t.

Git: I highly recommend sticking to GitHub. The AI scene from microsoft is insane at the moment. You'll benefit highly when these features come to GitHub.

Database: You can't go wrong with MongoDB if you are new to distributed NoSQL databases. I also recommend using Redis as a cache. If you have the budget, go for a managed DB. It will save you a lot of hassle. Example: CockroachDB, 8base, Fauna, etc.

CI/CD: Do not use Jenkins, it is cumbersome. Github Actions if you use githhub. Or GitLab CI/CD if you use gitlab for git.

Testing Suites: Can't say, depends on what you are trying to do. But, Postman isn't ever a bad choice, if you are using the free version.

·
Reply
Quality Engineer I at Azul Systems·
Recommends
on
Visual Studio CodeVisual Studio Code

I’m pretty sure using Jetbrains Rider requires you to have a license for it, since it’s not free software like the IntelliJ Idea counterpart. Visual Studio itself is a very, very powerful IDE and has support for multiple different languages, provided you’re working on a Windows based system.

If you’re not working on a Windows based system, and you’re fine with fiddling around a little bit with your developer environment at the beginning for better experience later, and will not be developing any desktop c# applications, I have to recommend Visual Studio Code, since it’s lighter than the full fledged Visual Studio, and has absolutely amazing integration with almost anything you might need to develop .NET web applications, be it C#, JavaScript, TypeScript, YAML/JSON, SQL/NoSQL Databases, Docker, Kubernetes etc.

But in the end, if you’re getting a Visual Studio license, I’d recommend trying it out, because it’s an absolutely spectacular piece of software for working on .NET applications, and once you understand it, you’ll fall in love with it. The problem is, it’s full power is unlocked when using it on a Windows PC.

READ MORE
7 upvotes·1 comment·9.3K views
Phillip Blanton
Phillip Blanton
·
April 24th 2023 at 7:54PM

Of course he'll need a license for it, but that wasn't part of his question. Though IntelliJ does have a community edition is is only for personal use and is not licensed for use in an organizational setting.

He's going to need IntelliJ Ultimate, so no matter what he does, he'll have to have a license for it.

·
Reply
Quality Engineer I at Azul Systems·

Spent 3 hours debugging why my PersistenVolumeClaim was not being provisioned, found out I was using the wrong cluster all this time. 😓

But, learnt that PVCs cannot be provisioned on “docker-desktop” kubernetes cluster because of an ongoing bug : https://github.com/docker/for-win/issues/7023

So, if you’re testing or learning Kubernetes on your local machine, just stick to using “minikube” instead of the one supplied with Docker Desktop if you prefer to not go bald soon and want to keep it that way.

Also, minikube currently seems to be having issues with Docker on Windows hosts with WSL2, so try using Podman if you encounter any issues : https://minikube.sigs.k8s.io/docs/drivers/podman/

READ MORE
6 upvotes·4 comments·39.1K views
Muhammad Waleed
Muhammad Waleed
·
February 10th 2023 at 10:09AM

Thanks for sharing.

What do you recommend to someone who is just starting out with these container platforms? A container that isn't too complicated and heavy on the system. Docker? Kubernetes? Something other.. What would you suggest?

Note: Stack would be Spring Boot, Angular, MySQL (DB might change).

Thanks in advance.

·
Reply
Palaash Atri
Palaash Atri
·
February 14th 2023 at 2:28PM

Docker and Kubernetes are seperate technologies. In simple terms, Docker packages and holds all your code, and Kubernetes helps run and manager these Docker containers. If you're just starting out, try doing local deployments and understanding how containerisation technologies work using Docker, and then try local Kubernetes deployments using Minikube (instead of the Kubernetes cluster provided by default with Docker Desktop application, which I mentioned here). Once you're comfortable with all of it, try learning how to create production grade Kubernetes clusters using kubeadm, because that's what is usually used to create production grade clusters that can handle high throughput applications.

Regarding your stack, I would recommend containerising Spring Boot + DB in one single Docker container, Angular in another one, and deploy them over a minikube cluster if you're just starting out.

You can try experimenting by seperating Spring Boot and DB into seperate containers (or even K8s namespaces!) later, as well as using Helm to bundle all Kubernetes resources in a single package later!

·
Reply
Muhammad Waleed
Muhammad Waleed
·
February 15th 2023 at 7:02AM

Thanks for the advice, it really helped streamline my thoughts.

·
Reply
Palaash Atri
Palaash Atri
·
March 17th 2023 at 5:38PM

Happy to help!

·
Reply
Quality Engineer I at Azul Systems·

Job search can be hard and pretty daunting.

However, I recommend you sticking with whatever you have the most experience with. MERN stack and Spring Boot jobs are actually very high in demand in service based companies, a lot of which can allow you to work remotely if their specific clients work at hours that don't match with yours.

I recommend going over on LinkedIn itself and search for Associate/Junior dev positions with Java or JavaScript filters rather than specific Nodejs or Spring Boot filters. Freshers aren't generally expected to know web frameworks right after graduation, and undergo mandatory training anyways, even for vastly differing domains (you could undergo training for Go even though you mentioned skill in Java, as a fresher).

However, freshers are expected to know atleast 1 object oriented language, in which they can demonstrate fundaments of OOP, basic logic building, and working with Strings. It starts with senior roles in software industry where people are generally asked about what "stack" they previously worked on, which influences decision making for hiring people.

As a fresher, you are expected to know nothing. So start filtering and applying that you know nothing and want to learn everything, while job searching. Good Luck!

READ MORE
6 upvotes·1 comment·19.1K views
Sutej Kulkarni
Sutej Kulkarni
·
February 10th 2023 at 3:35AM

Thanks for your advice

·
Reply
Quality Engineer I at Azul Systems·

I assume you are using GridFS to store files on MongoDB?

I don't really think GridFS has Unix directory support that I guess you want out of your SPA to show, but why not use Amazon S3 to directly store this data in the required format, and add that reference path to MongoDB?

Adding a React component to File object seems like a pretty easy way to implement the SPA functionality you want, but, I believe you'd have to take into account how to handle the following issues: 1. File duplicacy 2. Invalid file names 3. Faster file uploads and downloads (possibly by the use of blob chunks) 4. Handling partial file uploads/downloads in case of service outage/timeouts 5. Partial deletion of files 6. User ownership (if you are implementing a multitenant workflow) and access restrictions 7. Deployment has its whole other set of issues, including usage costs for storage, handling requests through a cloud provider etc.

You can create a basic architecture workflow that takes into account a lot of these issues to help design your system.

READ MORE
5 upvotes·20.8K views
Quality Engineer I at Azul Systems·
  1. Learning how to connect Node.js to PostgreSQL should be your first Google search. Its usually as simple as implementing interfaces from a prebuilt connector and running methods from it.
  2. Create RESTful APIs in Node.js that utilise CRUD functionality using the aforementioned PostgreSQL connector.
  3. Learn how to make frontend web applications using your frontend framework of choice. I recommend learning Angular, because that's what I personally started my journey and I see it being used consistently across many different organisations and projects, but Vue is also fine too.
  4. Learn how to call RESTful APIs from your frontend framework. The easiest way is to just plug into one of the methods, but there are much better, graceful ways to achieve this objective.

Keep exploring.

READ MORE
3 upvotes·5 comments·268 views
Alexandre Ivanov
Alexandre Ivanov
·
February 9th 2023 at 1:34PM

Could you explain why a company would prefer angular over react?

·
Reply
Palaash Atri
Palaash Atri
·
February 10th 2023 at 7:36AM

Good question.

Most orgs prefer Angular because Angular offers a bootstrapped MVC architecture out of the box, and a lot of features can be plugged into it easily due to its JavaScript roots, similar to Spring MVC/Spring Boot or .NET MVC. It helps make application development faster, while also maintaining a readable codebase with proper architecture.

React also provides a similar approach, but after a few tweaks, and addition of a few different libraries.

They both are mature JavaScript frameworks, but by design, Angular is used for high throughput and large applications (like admin dashboards and stuff) whereas React is preferred for smaller grade applications (like application portals), or in conjunction with React Native, if the team is using it for mobile applications.

It’s a use case thing, but Angular makes bootstrapping into MVC easier than React in most cases.

·
Reply
Alexandre Ivanov
Alexandre Ivanov
·
February 11th 2023 at 2:03AM

That’s the point I don’t understand why Angular is used for " high throughput " applications this is not related it’s just a preference you can do exactly the same app in react

someone said that angular is more secure do you confirm ?

·
Reply
Palaash Atri
Palaash Atri
·
February 14th 2023 at 2:56PM

The "Ivy Renderer" used by Angular by default helps optimise performance by preventing calling of unecessary code by a process they like to call "tree-shaking", and limiting re-rendering of components as much as possible. Of course, how much time a web page takes to render also depends upon the quality of code written by the engineers, but a lot of times where Angular's features actually shine through are in high throughput production scale applications where there are a lot of components that need to be rendered differentially. For smaller scale applications where you don't need those kind of optimizations, React is preferred.

Also, Angular is said to be "more secure", because it uses TypeScript instead of JavaScript, which is a type safe language (like Java, C#), and a superset of JavaScript. It helps prevent developers from properly defining data requests and responses that would require a lot more validation in traditional JavaScript.

Here is a good resource to understanding Type Safety : https://www.baeldung.com/cs/type-safety-programming

Here is a good resource that shows Type Safety in TS : https://levelup.gitconnected.com/achieve-type-safety-with-typescript-magic-fef5ff939c98

You can also make JavaScript code more secure and as fast, but it needs much more work. Why not just use TypeScript (and Angular) at that point instead rather than using JavaScript (and React) and waste extra time and effort to make it just as fast and as secure, on corporate time, and corporate hours?

·
Reply
Alexandre Ivanov
Alexandre Ivanov
·
February 9th 2023 at 1:34PM

Could you explain why a company would prefer angular over react?

·
Reply