Answer the question
In order to leave comments, you need to log in
How to design the architecture of a large project with basic knowledge of programming?
Hello! I certainly understand that the question is from the series "Are you all right with your head?! No experience, no architecture!".
But still, I would like to consult with you, because. now you need to prepare an MVP and plan the architecture of a large project (the project will be a client-server application (WEB and Mobile).
It seems to me that it is more logical to divide the architecture into micro-services. I plan to develop the project in Python/Django/PostgreSQL/MongoDB.
I have basic knowledge of Python, SQL, and Django.Unfortunately, at the MVP development stage there is no opportunity to involve third-party developers with more experience.Please
help with the advice of books / articles / material that will allow you to quickly understand the principles of competent project architecture development.
Thank you!
Answer the question
In order to leave comments, you need to log in
Unfortunately with initial knowledge of programming - in any way.
You can't recruit third parties, but you're already recruiting them through Toaster.
If you are planning a business project, try to implement the project the way you envision it. To just start working. If you can really do it (launch a working project alone with basic programming knowledge), then later, when the project starts working and starts to make a profit, just hire third-party developers who will write the project from scratch, while you will already have some experience from the project (statistics, metrics, additional ideas that came after the start of the project) and so on.
As they say - optimization before optimization is not needed.
I had the experience of launching an online store at a time when there were a dozen of them all over the country. We wrote the first online store for almost half a year, introducing thousands of features into it, which turned out to be unclaimed. A year later, the project recaptured itself, and we ordered not a redesign, but the entire store from scratch. The development took 2 months, costing 4 times cheaper. The functionality has become much more convenient. And we realized that for the first time we also had to take a simpler path, then we would have launched 4 months earlier and would have fought back in six months.
It seems to me that it is more logical to divide the architecture into micro-services.
It seems to you. But you are not Google .
In your case, the "crap-crap and production" methodology will fit perfectly. I am not kidding. Nagovnokoda something working, there's nothing wrong with that.
1. Design the API first. Those. the entire list of URLs and what will happen on which URL. And it is even better to make TK. For example
TK https://github.com/sat2707/hlcupdocs/blob/master/T...
requests
GET /<entity>/<id> для получения данных о сущности
GET /users/<id>/visits для получения списка посещений пользователем
GET /locations/<id>/avg для получения средней оценки достопримечательности
POST /<entity>/<id> на обновление
POST /<entity>/new на создание
If the question is "how?", then the answer will be bad) Yes, you will come up with something there, only then jambs, serious shortcomings, bottlenecks will come out. If there is no money, then it is better to imagine how it might look like, divide it into small parts and separately understand each of them, asking experienced coders if this is normal, and what will happen if this is the case.
For starters, read about solid principles and look for an article on hexagonal architecture on Habré (a good example of implementing these principles in practice). Also on YouTube there are lectures by Sergei Nemchinsky on architecture and OOP https://www.youtube.com/watch?v=S-RjiMAxHio&list=P... Microservices are a particular (and quite radical) case of isolating application components, but for you I started to at least make a monolithic application more or less isolated, so that in six months it would not turn out that for the sake of introducing one chip, you need to cut 97% of the code. Plus, look at how the rest api is done, it doesn’t fit everywhere, really.
First you need to decide at least with the minimum set of functionality that the project will have to have. After we have outlined the most important points, we begin to think about what data we need to complete. Those. for example, a normal entrance to the site:
We have an Account, for it you need to know id, login, pass, login_time. Each account has its own User: id, name, eMail, itc. And so on, analyze each item of the functionality and see if we have all the necessary data.
Also, when designing a database, pay attention to the types of links https://technet.microsoft.com/ru-ru/library/ms1906... and rely on https://habrahabr.ru/post/254773/ .
After designing the base, we start writing wrapper classes on the client / server, depending on the type of project, and add the necessary methods for collecting / updating / adding data. And there it will already be more clearly visible whether you have all the necessary information for work or if you need something else.
At the end, you take the visual part and link it to the models. This step will fill in any gaps in the models if they remain.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question