If you like DNray Forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...

 

Architecting a Client-Server Application with Minimal Programming Experience

Started by EricMoose, Jan 16, 2024, 12:22 AM

Previous topic - Next topic

EricMooseTopic starter

As a programmer venturing into a large project with limited programming experience, I face the daunting task of designing the architecture for an MVP of a client-server application (WEB and Mobile). The project will utilize Python, Django, PostgreSQL, and MongoDB. Despite my basic knowledge in Python, SQL, and Django, engaging experienced third-party developers at this stage is not feasible.



I am contemplating structuring the architecture into microservices, but seek guidance on resources such as books, articles, or materials to quickly grasp the principles of sound project development. Your input would be invaluable.
Thank you!
  •  


jessiw

Given your limited programming experience, it's commendable that you are taking on the task of architecting the MVP for a client-server application using Python, Django, PostgreSQL, and MongoDB.

Structuring the architecture into microservices is indeed a wise approach, considering the scalability and maintainability advantages it offers, especially for a project of this magnitude. For someone in your position, I would recommend a few resources to help you quickly grasp the principles of sound project development and microservices architecture.
"Building Microservices" by Sam Newman is an excellent book that provides comprehensive insights into the key principles, patterns, and best practices for designing and implementing microservices. It covers topics such as decentralization, data management, and deployment strategies, which will be invaluable to you in architecting your application.

I suggest exploring online platforms such as Pluralsight, Udemy, or Coursera, where you can find courses specifically tailored to microservices architecture and Python/Django development. These platforms offer a wealth of practical tutorials, hands-on exercises, and expert-led instruction that will augment your understanding of building robust, scalable microservices.

In conjunction with these resources, I encourage you to dive into the dоcumentation and case studies of successful client-server applications built with Python, Django, and the specified databases. Understanding real-world examples and best practices will provide you with a holistic view of how to structure your architecture effectively.

Lastly, don't underestimate the power of engaging with the developer community through forums like Stack Overflow, Reddit, and specialized discussion groups. Utilize these platforms to seek guidance, share your challenges, and learn from the experiences of others who have tackled similar projects.
While the task ahead may seem daunting, your willingness to embrace this challenge will undoubtedly enhance your skills and expertise as a programmer. Best of luck, and remember that continuous learning and perseverance are the keys to success in the ever-evolving world of software development.
  •  

JessicaJohn

I regret to inform you that without a solid grounding in programming, launching a business project may seem like an insurmountable challenge. Attracting third-party developers may also not be viable initially, but fear not, as there is still hope through alternative avenues.

If you have a vision for a business project, attempt to execute it in line with your conceptualization, even if it means starting with basic programming knowledge. The fundamental goal is to get the project off the ground and operational. Should you successfully achieve this (by independently launching a functional project with limited programming skills), you can always enlist the expertise of third-party developers once the project is generating revenue. By then, you will have garnered valuable insights from the project (such as statistics, metrics, and new ideas that emerged post-launch), thus making the development process smoother and more informed.

Remember, excessive optimization at the outset may not be essential. Drawing from my personal experience of launching an online store during a time when the market was saturated, we spent nearly six months developing the initial version, incorporating countless features that ultimately went unused. A year later, we realized the need for a complete overhaul rather than just a redesign. The subsequent development took only 2 months and cost significantly less, yet delivered a far more user-friendly functionality. This taught us the importance of taking a more streamlined approach from the start, which could have saved us 3 months in the initial phase and reaped benefits within 7 months.
  •  

ErichViell

The initial step is to outline the system's functionality. It's crucial to identify the core features for the minimum viable product (MVP) and discard any unnecessary elements. List these functions without going into details, such as "data transmission and storage in the server database." Eliminate any frills that the MVP can do without.

Moving on to the interface, it's essential to map out what the system should achieve and how it will appear. Sketch the screens of the future application on paper and work out user scenarios with a pencil, clearly defining actions like "the user clicks on this button, leading to the opening of a specific window."

Subsequently, logical modules for the application can be identified, and these should be dоcumented. The next step involves determining the horizontal levels.

The first layer typically comprises the web and mobile application interfaces.
The second layer involves processing user data, defining data transfers and window openings, among other things.
The third layer deals with data manipulation, including the creation and management of objects.

For the database itself, it's important to create objects and establish connections between them, potentially using a modeling application like Visio.
Finally, at each level, it's crucial to define objects and functions based on the scenarios. If unfamiliar with Object-Oriented Programming (OOP), it's advisable to familiarize oneself with it, as it will be immensely beneficial in the long run.
  •  


If you like DNray forum, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...