JavaRush /Java Blog /Random-KO /프로젝트 계획: 두 번 측정 - 한 번 자르기 - "A부터 Z까지 Java 프로젝트"
Roman Beekeeper
레벨 35

프로젝트 계획: 두 번 측정 - 한 번 자르기 - "A부터 Z까지 Java 프로젝트"

Random-KO 그룹에 게시되었습니다
안녕하세요, 동료들. 오늘은 본격적으로 코딩을 시작하기 전에 해야 할 준비 작업에 대해 이야기하겠습니다. 보다 구체적으로 애플리케이션 아키텍처 계획 및 생성에 대해 설명합니다. A부터 Z까지 Java 프로젝트. 프로젝트 계획: 7회 측정 - 1회 자르기 - 1하지만 어디서부터 시작해야 할까요? 이 아키텍처를 구축하는 방법은 무엇입니까? 모든 것이 그렇듯이 처음부터 시작해야 합니다. 즉 - IDEA를 사용합니다. 우리 프로젝트의 아이디어는 기본적인 기능을 갖춘 유용한 텔레그램 봇을 만드는 것이었습니다. 정확히 무엇을 반복해 보겠습니다. "저는 사용자로서 관심 있는 JavaRush 그룹에 새 기사가 게시될 때 알림을 받을 수 있기를 원합니다." YAGNI 원칙에 따라 애플리케이션을 구축하겠습니다. 이는 우리가 필요한 것만 취한다는 것을 의미합니다. 우리는 단지 우리가 원한다고 해서 미리 기능을 만들어 두지는 않을 것이며 언젠가 실제로 유용하게 쓰일 수도 있을 것입니다. 예, 우리는 읽기 쉽고 확장 가능한 애플리케이션을 만들 것입니다. 하지만 이것이 "성장을 위한" 데이터베이스 스키마를 만들 것이라는 의미는 아닙니다. 이 "성장"을 지원하지 않기 위해서는 완전히 포기하는 것이 더 낫다고 결정했습니다. 이는 개발 중 불필요한 지원과 불필요한 테스트를 피하는 데 도움이 됩니다. 나중에 우리 프로젝트가 프로덕션에 들어갈 때(역시 영국식, 약어 prod - 프로덕션에서 따옴) 우리는 더 많은 일을 할 수 있게 될 것입니다. 아이디어를 결정했다면 좀 더 장난스럽게 그림을 그려야 합니다 . 무엇을 그릴까? 다양한 사용자 그룹의 구독 데이터를 저장하는 기능이 필요합니다. 텔레그램에서는 채팅 ID 형태로 사용자 ID를 사용할 수 있는 것으로 알고 있습니다. 그리고 새 기사 검색이 실제로 어떻게 진행될지에 대한 아이디어가 있습니다. 새 기사를 구독하는 모든 그룹을 검색하여 채팅으로 보냅니다. 이를 바탕으로 우리는 첫 번째 근사치로 다음을 얻습니다(여기에는 장식 없는 개발이 있습니다). A부터 Z까지 Java 프로젝트. 프로젝트 계획: 7회 측정 - 1회 자르기 - 2여러분이 제 손글씨를 이해하시기를 바라지 않습니다. 개발이 시작되는 방법과 위치를 정확히 보여주고 싶습니다. 첫 번째 단계가 완료되었습니다. 우리는 어떤 일이 일어날지 어떻게든 결정했습니다. 데이터베이스의 모델/테이블은 위에 설명되어 있습니다. 그러나 이것은 초안입니다. 다듬어 더 읽기 쉬운 형태로 만들 수 있고 또 그래야 합니다. 다듬는 동안 봇의 작업에 대한 통계도 얻고 싶다는 생각이 들었습니다. 이것을 추가했습니다. 이 그림에서는 그것이 무엇이며 어떻게 배열될지 명확합니다. 즉, 그 안에 어떤 테이블과 필드가 있을 것인지, 테이블에 어떤 엔터티 이름이 있을 것인지입니다. 그 중 몇 가지가 있을 것이라고 결정되었습니다.
  • 사용자 - 당사 봇을 사용할 텔레그램 사용자에 대한 정보입니다. 보시다시피 채팅 ID와 사용자의 활성 여부에 대한 플래그만 저장됩니다. 왜? 우리의 목표는 사용자에 대한 정보를 수집하는 것이 아니라 사용자에게 이익을 주는 것이기 때문입니다.
  • GroupSub - 구독 중인 그룹에 대한 정보와 구독자에게 전송된 최신 기사가 여기에 표시됩니다.
  • 통계 - 아직 스키마를 만들지 않았습니다. 나중에 작성하겠습니다. 이는 프로젝트 MVP의 주요 목표가 아닙니다.
A부터 Z까지 Java 프로젝트. 프로젝트 계획: 7회 측정 - 1회 자르기 - 3그 이후에는 새로운 기사를 검색하는 방법을 좀 더 자세히 보여드리고 싶었습니다. 이를 위해 BPMN 다이어그램을 사용하여 그림으로 변환하여 다음과 같은 결과를 얻었습니다. A부터 Z까지 Java 프로젝트. 프로젝트 계획: 7회 측정 - 1회 자르기 - 4여기에 있는 모든 내용이 더 읽기 쉽고 이해하기 쉽습니다. 우리는 검색에서 이 계획에 따라 작업할 것입니다. 관리자는 프로그래머뿐만 아니라 이해할 수 있기 때문에 이 계획을 정말 좋아합니다. :D 일반적으로 시작되었습니다.

업무용 저장소 만들기

마지막으로 텔레그램 봇 작업을 위한 저장소를 생성할 수 있습니다.Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 5
  1. 저장소 이름, 간략한 설명 등 이미 우리에게 친숙한 항목을 입력합니다.
  2. 라이센스 추가 - Apache 2.0(재량에 따라 라이센스를 선택할 수 있음)
  3. 이제 우리 프로젝트를 사용할 수 있습니다. 링크는 JavaRush Telegrambot 입니다 .

저장소에 프로젝트 생성

프로젝트 작업을 위해서는 project 등 GitHub 도구를 활용하는 것이 좋을 것 같습니다. 그것은 무엇입니까? 여기에서 작업을 생성하고, 완료를 추적하고, 작업 상태를 저장할 수 있습니다. 누가 그 일을 수행할지 등을 결정합니다. 이를 위해 생성된 프로젝트에서 프로젝트 버튼을 찾고 거기에서 새 프로젝트를 생성합니다. Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 6보시다시피 여기서는 프로젝트 이름을 표시하고 설명하고 작업할 템플릿을 선택했습니다. 자동화된 칸반. 지금 우리에게 이것이 의미하는 바는 그다지 중요하지 않습니다. 가장 중요한 것은 작업이 포함된 보드가 여러 열로 나누어져 있고 각 열이 작업 상태가 된다는 것입니다.
  1. 수행할 작업 - 수행할 예정인 모든 작업입니다.
  2. 진행 중 - 현재 작업 중인 작업입니다.
  3. 완료 - 이 프로젝트 내에서 이미 완료된 작업입니다.
이렇게 하면 작업 상태를 알 수 있습니다. 어떤 것이 진행 중이고, 어떤 것이 완료되었는지. 게다가 이는 팀이 있는 경우뿐만 아니라 혼자서 작업할 때도 중요하고 편리합니다. 보드에 무언가가 표시되려면 이슈를 생성해야 합니다.

프로젝트에 대한 이슈(이슈) 작성

어떤 작업을 작성해야 하는지 이해하기 위해 프로젝트에서 무엇을 갖게 될지 결정해 봅시다. 쉽고 빠르게 실행할 수 있는 애플리케이션이 필요합니다. 그래야 데이터베이스에 액세스할 수 있고 데이터베이스 스키마를 관리 및 변경할 수 있으므로 JavaRush에서 REST 요청을 만들어 기사에 대한 데이터를 얻을 수 있습니다. 이를 기반으로 다음 기술을 선택할 수 있습니다.
  • SpringBoot - 애플리케이션의 프레임워크로서
  • Spring Data - 데이터베이스 작업을 위해
  • Flyway - 데이터베이스 마이그레이션 작업용
  • MySQL - 프로젝트의 데이터베이스로,
  • Telegrambot StringBoot 스타터 - 텔레그램 봇 작업을 위한 라이브러리
  • Unirest는 REST 요청 작업을 위한 라이브러리입니다.
위의 모든 것에서 작업 생성을 시작하겠습니다.

작업 생성 템플릿

다음 템플릿을 사용하여 작업을 생성합니다.
  1. 작업 이름은 JRTB-{IssueNumber}:{IssueDescription} 과 같습니다 . 여기서:
    • {IssueNumber}는 이슈의 일련번호입니다. 마지막 문제에서 한 가지 더 살펴보겠습니다.
    • {IssueDescription} - 문제에 대한 간략한 설명입니다.
  2. 작업 본문에서 이에 대한 더 자세한 설명을 작성합니다(때로는 작업 이름의 설명과 일치할 수도 있음).
  3. 수락 기준은 요구 사항 목록이며, 이후에는 작업이 완료된 것으로 간주될 수 있습니다. 말하자면, 작업을 수락하는 기준입니다. 이를 이용하여 리뷰어(영어 리뷰어 - 리뷰어 - 작업이 어떻게 완료되었는지 살펴보는 사람)는 작업이 완전히 완료되었는지 여부를 이해할 수 있습니다.
이 템플릿을 사용하여 첫 번째 작업을 생성합니다. Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 7작업을 생성할 때 이 작업이 어떤 프로젝트에 적합한지, 누가 수행할지(담당자), 이 작업이 속한 레이블(레이블)을 즉시 결정했다는 점도 주목할 가치가 있습니다. 다음으로 간단한 설명과 링크와 함께 작업 이름을 간단히 표시하겠습니다. 그들은 모두 여기에 있습니다 . 여기에 표시된 것과 거의 동일한 순서로 작업을 수행합니다.
  1. [기능] JRTB-0: Skeleton Spring 부트 프로젝트 생성 - 여기서는 모든 것이 명확합니다. 이전 기사에서 수행한 작업의 첫 번째 부분을 수행해야 합니다.
  2. [기능] JRTB-2: 프로젝트에 텔레그램 봇 추가 - 단순히 응답하고 살아 있고 건강하다고 말하는 빈 봇을 추가합니다.
  3. [특징] JRTB-3: 텔레그램봇용 명령 패턴 구현 - 텔레그램 봇에서 명령을 사용하는 올바른 접근 방식을 설정해 보겠습니다. 지금까지 여러 팀에 대해.
  4. [기능] JRTB-1: 리포지토리 레이어 추가 - 이것은 가장 큰 작업 중 하나입니다. 데이터베이스 작업에 필요한 모든 것을 결합합니다.
  5. [특징] JRTB-5: 사용자로서 구독에 그룹을 추가하고 싶습니다 . 이것은 이미 Agile 이해의 첫 번째 사용자 스토리입니다. 이는 사용자에게 실질적인 이점이 될 것입니다. 봇에 그룹 구독을 추가하는 것이 가능해집니다.
  6. [특징] JRTB-12: 새 기사에 대한 알림 보내기 예약 구현 - 여기에서는 새 기사가 각 그룹에 게시되고 그룹에 가입한 모든 사용자에게 전송되는 경우 새 기사 검색을 구현합니다.
  7. [기능] JRTB-6: 사용자로서 내 그룹 구독 목록을 보고 싶습니다 . 여기에서는 모든 것이 간단합니다. 사용자가 구독하는 모든 그룹 목록을 표시하는 명령을 추가합니다.
  8. [기능] JRTB-7: 사용자로서 내 구독에서 그룹 구독을 제거하고 싶습니다 . 여기서는 그룹의 업데이트에 대한 사용자 구독을 제거해야 합니다.
  9. [특징] JRTB-8: 사용자로서 봇을 사용하여 비활성화를 설정하고 싶습니다 . 봇 중지를 구현합니다. 즉, 작업을 중지하기 위해 시스템에서 수행해야 하는 모든 작업입니다. 처리에 /stop 명령을 추가합니다.
  10. [특징] JRTB-9: 사용자로서 봇 작업을 시작하거나 이전에 사용했다면 활성화되도록 설정하고 싶습니다. - /start 명령 처리를 추가합니다. 정확히 우리가 원하는 방식입니다.
  11. [특징] JRTB-10: 관리자로서 봇 통계를 보고 싶습니다. 봇 통계 모음을 생성하는 것입니다. 관리자 기능 추가.
  12. [특징] JRTB-11: 사용자로서 이 텔레그램 봇에 대한 문서 작성 문서를 보고 싶습니다 . 예, 예, 친구 여러분, 그것 없이는 살 수 없습니다. 이 방법을 빨리 배울수록 더 좋아질 것입니다))
이것은 이미 프로젝트의 시작처럼 보입니다. 말하자면 우리는 프로젝트 설계자이자 비즈니스 분석가로 일했습니다.

저장소 채우기

코딩을 시작하기 전에 또 무엇을 해야 합니까? - 작가님, 이 문단 몇 개나 추가하실 수 있나요, 심연에서 끌어내시는 건가요?? — 아니요, 작업의 질은 세부 사항에 표시됩니다. 그리고 그들은 말이 되는 것들입니다. 그럼 세부사항을 하나 더 추가해 보겠습니다. 프로젝트가 대중화되고 다른 개발자들이 이해할 수 있게 되려면 프로젝트를 작성해야 합니다. 무엇을 추가해야 합니까? GitHub에서 프로젝트 작업 최적화: Github 템플릿 저장소 알아보기 문서에서 수행할 수 있는 작업의 전체 목록을 설명했습니다 . 나는 그것을 읽는 것이 좋습니다. 명확한 버전 관리, 즉 우리가 하고 있는 일을 명확하게 이해하는 것이 중요합니다. 따라서 프로젝트 변경 사항이 기록될 RELEASE_NOTES 파일을 추가했습니다. 예를 들어, 내 프로젝트의 RELEASE_NOTES를 볼 수 있습니다. (예, 제가 무엇에 에너지와 창의력을 쏟았는지 보여주시면 어떨까요?) 각각의 새 버전에 대한 변경 사항이 여기에 설명되어 있습니다. 또한 4가지 옵션이 있는 새 작업을 생성하기 위한 템플릿도 추가했습니다.
  • Bug Report 는 작업 중 버그를 발견한 사용자/테스터가 작성하는 작업입니다. 이는 매우 중요한 사항입니다. 버그 수정을 관리하는 데 도움이 됩니다.
  • 기능 요청은 새로운 기능을 추가하는 작업입니다. 프로젝트의 모든 첫 번째 작업은 기능 요청 작업입니다.
  • 개선 요청 – 애플리케이션의 작동을 개선하기 위한 작업입니다. 예를 들어 봇으로 작업할 때 테스트 답변을 변경합니다. 나는 기술 작가가 아니기 때문에 완전히 정답이 아닌 답을 생각해 낼 수 있습니다. 그러니 당신에게 욕구와 능력이 있다면, 그것을 제공하십시오 :)
  • 질문은 애플리케이션의 작동에 관해 개발자에게 묻는 질문입니다. 매우 유용한 것입니다. 작업에 대한 이해가 없거나 어떤 질문에 대해 의구심이 있다고 가정해 보겠습니다. 이런 식으로 질문하고 직접 답변을 얻을 수 있습니다.
GitHub를 보면 정확히 다음과 같이 보일 것입니다. Java-проект от А до Я. Планирование проекта: семь раз отмерь — один раз отрежь - 8또한 현재 그룹 작업을 위한 JavaRush API 작업에 대한 문서도 있습니다.

무엇 향후 계획?

글쎄, 우리는 이 모든 단계를 완료하고 프로젝트가 종료됩니까? 아니요, 전혀 그렇지 않습니다. 이 프로젝트는 계속해서 진행됩니다. 이는 저와 참여를 원하는 모든 JavaRush 학생/졸업생이 개발할 것입니다. 미래에 대한 당신의 계획은 무엇입니까? 그들 중 다수. 첫 번째 계획은 JavaRush API용 Java 클라이언트를 만드는 것입니다. 개발자들은 Swagger를 공개 액세스할 수 있도록 약속했습니다. 스웨거(Swagger)가 무엇인지도 살펴보겠습니다. 멋지고 매우 유용한 것입니다. 다음으로 JavaRush 사이트를 텔레그램 봇과 통합하겠습니다. 구독을 동기화하기 위해 사용자를 봇에 연결해 보겠습니다. 강좌 수료에 대한 통계를 만들어 보겠습니다. 그리고 JavaRush 커뮤니티로서 원하는 모든 것이 있습니다.

결론

오늘 우리는 프로젝트 제작 전 비하인드 스토리 작업에 대해 이야기했습니다. 보다 정확하게는 작업 계획을 작성하는 방법에 대해 설명하지 않으면 많은 에너지를 낭비할 수 있습니다. 반복합니다. 프로젝트의 시작 부분은 이미 여기에서 공개되었습니다 . 평소와 마찬가지로 Github에서 내 계정을 구독하는 것이 좋습니다 . 이렇게 하면 기사가 게시되기 전에 프로젝트에 대한 변경 사항을 받을 수 있습니다. 나는 이미 모든 이해관계자가 Github에 등록했다고 가정합니다. 예, 프로젝트는 우리가 원하는 만큼 빠르게 진행되지 않습니다. 그러나 직장의 실제 프로젝트와 같습니다. 다음 기사에서는 첫 번째 작업 추가에 대해 설명하겠습니다. 읽어주신 모든 분들께 감사드리며 곧 뵙겠습니다!

시리즈의 모든 자료 목록은 이 기사의 시작 부분에 있습니다.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION