Join our Computer Engineering community on 

Untitled design (47).png
Untitled design (48).png
Posted Questions

01

Posted Anonymously- "My question pertains to web development, as I aspire to be a web developer. I'm learning full-stack, and I'm constantly trying to learn and understand how to build a scalable website that can handle thousands of users. So it always occurs to me that large platforms like Facebook, LinkedIn, and others choose their tech stacks to make their websites scalable or there are other factors too that a developer must consider. To clarify the question, do only the right tech stacks matter in terms of scalability, or are there other concepts and technology involved?"

Answered by Andrew Praveen, Technical Lead at RedBlocks Technologies

02

Posted Anonymously - "I am into software development, and I am learning dev ops. So I am little bit confused about what goes behind the scenes when we load and interact with a web application in the browser in local vs a deployed application. So, here is my understanding on what happens in production environment after we deploy our client app and server app. What I understand is, there are two parts- client app and server app. Client pp is just static files placed somewhere the web server(Nginx) can locate. And our application server is running on some host (Cloud). When user makes a request to load static data , the browser makes a request to nginx and nginx returns back with our react app. We can use docker to run the client app and sever app in separate containers as well. Now, on subsequent requests while interacting with the react app, if user clicks a button that should show some products(lets imagine this functionality) , our react app will make a request with the help of browser to a specific endpoint, say /api/products, now this is goes to nginx, which in turns calls our application server and gives back the data to the browser, which parses it and our react app renders it.

 

Questions- Is my understanding correct? How does the web server locate our application servers? Is it through the network request that was made when interacting with the client app and some config in the nginx server? We have the api calls in the frontend- like /api/products - that transforms to https://www.mywebsite.com/api/products. So our backend service(application service is hosted on www.mywebsite.com. What about the ports here?"

Answered by Alkesh Ghorpade, Senior Software Engineer

Yes your understanding is correct.

 

1. Let me take an example of Nginx as web server and Puma as application server. We point the Nginx web server to our Puma application via Ngnix config file. Lets see this example here https://github.com/puma/puma/blob/master/docs/nginx.md. upstream myapp { server unix:///myapp/tmp/puma.sock; } This specifies the path where our puma socket is open for accepting requests from outside. And we have pointed this myapp to our proxy pass as proxy_pass http://myapp; So in case we want to point our nginx to google.com or any other server we need change the server unix:///myapp/tmp/puma.sock; to server srv1.example.com.

 

2. Coming to port default http port is 80 and https is 443. If we check the above github link. We can see under this config server { listen 80; server_name myapp.com; We can add listen 443 for https port.

 

3. Coming to static and dynamic file rendering. As you specified we can configure the static file paths in the nginx config and that will take care of serving the files directly from the path mentioned. location = /500.html { root /myapp/current/public; }. If the requested path in the URL does not matches any of the above location mentioned in the config file it is sent to the application server.

You can refer full Nginx configuration here https://www.nginx.com/resources/wiki/start/topics/examples/full/

03

Posted by Harsh Anand- "As a beginner in web development I have heard a lot about dockers, Kubernetes and cloud-native. These terms actually mean a lot in themselves. But as a beginner who knows MERN stack how to learn these things and what is the resources available to learn these things?"

Answered by Deepak V, Software Engineer

Docker, Kubernetes or cloud-native itself is a domain all together which we call DevOps. DevOps has its own process for managing your application’s deployment, maintenance etc. My suggestion is being a beginner, don't break your head on catching all the fishes in the sea. Get your core concepts strong with the web it has a lot in itself to understand. But also let’s say you are pretty good with your web skills and you can develop web applications. Now you can start off by managing to deploy these applications in docker or Kubernetes. How to approach to learn any tech in general that I follow is.


1) Understand the principle of the technology you are using. Why this technology? How is it different from others?
2) The best resource for learning is their own documentation’s. It might be difficult to get in one go but that's the most in-depth resource you can get. Also for DevOps, you have a lot of free resource and videos online to learn. You don't actually have to buy courses.
3) Apply it to the applications that you have built. Get the community version to your system and get started to deploy it right away.