{"id":28718616,"url":"https://github.com/alex6712/learning-golang","last_synced_at":"2026-04-11T19:32:53.555Z","repository":{"id":294601084,"uuid":"986544715","full_name":"alex6712/learning-golang","owner":"alex6712","description":"Мой путь изучения Golang: от Python Backend Developer к Golang Backend Developer.","archived":false,"fork":false,"pushed_at":"2026-02-12T16:18:46.000Z","size":51,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-13T00:32:43.222Z","etag":null,"topics":["docker","docker-compose","education","gin","go","golang","grpc","kafka","microservices","web-application"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alex6712.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-19T19:12:51.000Z","updated_at":"2026-02-12T16:23:03.000Z","dependencies_parsed_at":"2025-06-15T05:02:07.347Z","dependency_job_id":"04891a2f-834b-4fdc-8b06-c6da749daba4","html_url":"https://github.com/alex6712/learning-golang","commit_stats":null,"previous_names":["alex6712/learning-golang"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alex6712/learning-golang","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex6712%2Flearning-golang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex6712%2Flearning-golang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex6712%2Flearning-golang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex6712%2Flearning-golang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alex6712","download_url":"https://codeload.github.com/alex6712/learning-golang/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alex6712%2Flearning-golang/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31693272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T13:07:20.380Z","status":"ssl_error","status_checked_at":"2026-04-11T13:06:47.903Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-compose","education","gin","go","golang","grpc","kafka","microservices","web-application"],"created_at":"2025-06-15T05:01:44.772Z","updated_at":"2026-04-11T19:32:53.547Z","avatar_url":"https://github.com/alex6712.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003e\n        \u003cb\u003eLearning Golang\u003c/b\u003e\n    \u003c/h1\u003e\n    \u003ch3\u003e\n        Здесь я изучаю веб-программирование на Golang\n    \u003c/h3\u003e\n    \u003cimg alt=\"GitHub Last Commit\" src=\"https://img.shields.io/github/last-commit/alex6712/learning-golang?logo=GitHub\"\u003e\n\u003c/div\u003e\n\nМой путь изучения нового языка программирования, его веб-фреймворков и использования уже знакомых мне инструментов в его контексте.\n\n## Почему Go?\n\nЯ программирую на **Python** в сфере _backend_-разработки уже долгое время: с начала моего обучения в университете в 2020 году. Начиная с **монолитных** систем, я постепенно изучал различные подходы к _проектированию веб-приложений_, и на текущий момент уже как несколько лет использую **микросервисную** и **гибридную** архитектуры в своих проектах.\n\nОдним из ключевых преимуществ **микросервисной** (и, как следствие, **гибридной**) архитектуры является её _\"отвязка\"_ от **стека**. Каждый из сервисов является **изолированным**: крутится в своём контейнере и содержит свои зависимости. Это позволяет писать хоть каждый микросервис на новом языке программирования.\n\n**Python** - очень многофункциональный язык программирования, который замечательно мне подходит, однако в некоторых задачах, он явно будет не лучшим выбором. И поэтому я решил изучить новый ЯП в контексте _веб-программирования_, чтобы расширить свой **стек** и иметь дополнительный **инструмент** в своём арсенале для решения _специальных_, _таргетных_ задач.\n\n**Go** я выбрал, т.к. именно этот язык полностью отвечает следующим пунктам, которые я выделил как главные:\n\n- **_Высокая скорость работы_** - **Go** очень быстрый язык программирования. В большинстве бенчмарков он находится между **C/C++** и **Java** (например, в [этом](https://github.com/jabbalaci/SpeedTests)). И хотя бенчмарки редко отражают реальные сценарии эксплуатации, отрицать высочайшую скорость и отзывчивость **Go** не стоит;\n\n- **_Удобная конкурентность_** - встроенные инструменты языка ([**goroutines**](https://go.dev/tour/concurrency/1), [**channels**](https://go.dev/tour/concurrency/2)) позволяют легко работать с асинхронностью, что сегодня просто необходимо в веб-разработке с её упором на **I/O bound**;\n\n- **_Простота в использовании_** - **Golang** сравнительно молодой язык программирования, который изначально создавался с [целью](https://go.dev/talks/2009/go_talk-20091030.pdf) упрощения разработки крупных систем: у него приятный синтаксис, немного ключевых слов, эффективная система пакетов, быстрая компиляция и множество других преимуществ;\n\n- **_Ориентированность на веб_** - язык **Go** создавался для веба, и он живёт в вебе. **Kubernetes**, **Docker**, **gRPC**, _микросервисы_, _облачные приложения_ - это всё про **Golang**.\n\n## Конечная цель\n\nТ.к. я собираюсь использовать **Go** в качестве инструмента создания микросервисов, основной целью этого репозитория я вижу развитие простого _консольного приложения_ в _веб-приложение_, реализующее основные паттерны этой области.\n\n\u003cdiv align=\"center\"\u003e\u003ch3\u003eТема веб-приложения: \u003cb\u003e\u003ci\u003eсервис, позволяющий создавать заметки, TODO list\u003c/i\u003e\u003c/b\u003e.\u003c/h3\u003e\u003c/div\u003e\n\n### 1. RESTful API\n\nAPI с использованием принципов REST, предоставляющее базовые для веб-приложения операции.\n- Регистрация, аутентификация, авторизация на основе JWT;\n- Создание, просмотр, изменение и удаление заметок в личном кабинете.\n\nИзучение подходов к проектированию сервисов на **Golang**, интеграция **best practices** этой области.\n\nОсновные технологии и инструменты: **Gin**, **database/sql**, **sqlx**.\n\n### 2. Межсервисное взаимодействие\n\nУстановка интерфейса общения сервисов с использованием двух подходов: _gRPC_ и _асинхронные брокеры сообщений_. Исследование контекста работы подобных инструментов с **Golang**.\n\nОсновные технологии и инструменты: **gRPC**, **Protobuf**, **Kafka**.\n\n### 3. Развёртка приложения на удалённом сервере\n\nРазвёртка веб-приложения на удалённом сервере с помощью **систем контейнеризации** и средств **CI/CD**. Настройка веб-сервера, проксирование, администрирование сервера. Применение _практик DevOps_ в контексте работы с **Golang**.\n\nОсновные технологии и инструменты: **GitHub Actions**, **Linux**, **Docker (docker-compose)**, **nginx**.\n\n## Лицензия\n\nДанный проект находится под лицензией [MIT License/X11 License](https://github.com/alex6712/learning-golang/blob/master/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex6712%2Flearning-golang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falex6712%2Flearning-golang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falex6712%2Flearning-golang/lists"}