The Codest
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 산업 분야
    • 핀테크 및 뱅킹
    • E-commerce
    • 애드테크
    • 헬스 테크
    • 제조
    • 물류
    • 자동차
    • IOT
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
뒤로 화살표 뒤로 가기
2022-01-05
소프트웨어 개발

팩워크 에피소드 1을 통한 Ruby on Rails 모듈화

니콜라스 니소리아

인간은 많은 시간과 노력을 들이지 않고는 문제의 큰 그림을 보기가 어렵습니다. 특히 크고 복잡한 애플리케이션으로 작업할 때 이런 일이 자주 발생합니다. 내 변경 사항의 부작용은 무엇인가요? 여기 이 줄이 코드베이스의 원격 부분의 테스트에 영향을 미치는 이유는 무엇인가요? 완벽하거나 완전한 솔루션은 존재하지 않지만, Shopify에서 여러분과 여러분의 팀에 도움이 될 수 있는 도구를 출시했습니다.

소개

다음에 대해 이야기하기 위해 Packwerk를 사용하려면 먼저 몇 가지 개념을 소개해야 합니다.

  • 응집력는 모듈 또는 클래스의 요소가 얼마나 많이 함께 속해 있는지를 나타내는 척도입니다.
  • 커플링는 모듈 또는 클래스 간의 종속성 수준을 나타냅니다.
  • 경계사이의 장벽을 나타냅니다. 코드. 이 경우 코드 경계는 동일한 코드베이스 내에서 서로 다른 관심 도메인을 의미합니다.
  • 모듈화소프트웨어 시스템을 여러 개의 개별 모듈로 나누어 각 모듈이 독립적으로 작동하도록 하는 프로세스입니다.

문제

아시다시피 Ruby 는 코드 경계를 적용하는 데 좋은 솔루션을 제공하지 않습니다. 가시성을 지정할 수는 있지만 모든 종속성이 전역 네임스페이스에 로드됩니다. 대규모 또는 모놀리스 애플리케이션에서 이러한 경계가 없으면 다음과 같은 문제가 발생합니다.

  • 낮은 응집력,
  • 높은 커플링,
  • 스파게티 코드.

Shopify의 모놀리스를 모듈화하고 경계를 강화하기 위해 다양한 솔루션을 시도했지만 기대했던 결과를 얻지 못했습니다:
- 비공개 상수 설정하기,
- 보석을 통해 경계를 설정합니다,
- 테스트를 사용하여 교차 컴포넌트 연결을 방지합니다,
- 루비의 변조 보석 사용,
- 마이크로서비스 만들기.

이전 시도에서 얻은 모든 지식을 바탕으로 자체 도구를 만들기로 결정했습니다: Packwerk.

Packwerk

Packwerk란 무엇인가요?

Packwerk 그룹 간의 경계를 설정하는 데 사용되는 정적 분석 도구입니다. Ruby 파일에 패키지.

패키지란 무엇인가요?

A 패키지 는 자동 로드된 코드가 포함된 폴더입니다. Shopify의 팀 는 패키지를 만들 때 모범 디자인 사례를 사용하도록 권장합니다.
- 기능성이 높은 것들을 함께 포장해야 합니다. 응집력,

  • 패키지는 서로 비교적 느슨하게 결합되어 있어야 합니다.

경계 검사 유형

개인정보 보호 및 종속성 경계를 적용하고, 경계 위반 및 주기적 종속성을 확인할 수 있습니다.

실무에 적용하는 팩워크

패키지를 만들 때 애플리케이션을 구조화하거나 재구조화할 수 있는 특정한 방법은 없습니다. 이 문서에서는 다음에서 제안하는 접근 방식을 따르겠습니다.
스테판 하게만 Ruby on Rails의 점진적 모듈화.

프로젝트 선택

새 프로젝트 를 클릭하거나 프로젝트 중 하나를 선택하세요. 저는 다음과 같은 오픈 소스 프로젝트를 사용하기로 결정했습니다. 코드트리지. Rails 6 애플리케이션이 필요하다는 점을 언급하는 것이 중요합니다. Packwerk Zeitwerk를 사용합니다.

Packwerk 초기화

먼저 젬파일에 다음과 같이 젬을 추가해야 합니다. 보석 '팩워크' 를 클릭한 다음 번들을 클릭합니다. 그런 다음 실행 중인 젬을 초기화할 준비가 되었습니다. 팩워크 초기화.

그 후, 우리는 다음과 같은 사실을 알게 되었습니다. Packwerk 세 개의 파일을 생성했습니다:

  • packwerk.yml

  • package.yml

  • inflections.yml

packwerk.yml 의 구성 파일입니다. Packwerk 여기서 포함 및 제외 파일을 정의하고, 로드 경로를 나열하고, 굴절 파일을 정의하는 등의 작업을 수행합니다;

package.yml 는 패키지의 구성 파일입니다. 이 파일에서 패키지의 경계에 대한 구성을 추가합니다. package.yml이 있는 모든 폴더는 다음에서 패키지로 인식됩니다. Packwerk. 그게 다입니다, Packwerk 첫 번째
패키지라고 부르며 root 패키지입니다.

inflections.yml 는 사용자 정의 굴절과 약어를 사용할 경우 이를 배치하는 곳입니다.

파일 및 파일 구성에 대한 자세한 내용은 다음에서 확인할 수 있습니다.
Packwerk.

Packwerk 속성

모듈화가 작동하려면 세 가지 기본 속성이 필요합니다: 명명된 컨테이너, 그 콘텐츠및 명시적 종속성 다른 컨테이너. 따라서 이러한 속성을 Packwerk:

  • 이름: 패키지의 이름은 루트에서 상대 경로입니다.
    애플리케이션입니다.

  • 콘텐츠: package.yml을 폴더에 넣으면 이제 폴더의 모든 파일이 패키지의 콘텐츠가 됩니다.

  • 종속성: 다른 패키지에 대한 종속성 키를 추가하여 종속성을 정의할 수 있습니다. package.yml.

기본적으로 포함되지는 않지만 권장되는 또 다른 파일은 README입니다. 패키지 사용법에 대한 정보를 제공하는 것이 중요합니다.

에피소드 1의 끝

디지털 제품 개발 컨설팅

자세히 보기

GraphQL Ruby. 성능은 어떨까요?

철도 및 기타 운송 수단

TMUX, Vim, Fzf + Ripgrep을 사용한 레일 개발

관련 문서

상승하는 화살표와 비용 효율성 또는 절감을 상징하는 금화가 있는 하락하는 막대 차트의 추상적인 그림. 밝은 회색 바탕에 "In Code We Trust"라는 슬로건과 함께 왼쪽 상단에 The Codest 로고가 표시됩니다.
소프트웨어 개발

제품 품질 저하 없이 개발팀을 확장하는 방법

개발팀을 확장하고 계신가요? 제품 품질을 저하시키지 않고 성장하는 방법을 알아보세요. 이 가이드에서는 확장할 시기의 징후, 팀 구조, 채용, 리더십 및 도구와 더불어 The Codest가 어떻게...

최신
소프트웨어 개발

미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트

The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...

최신
소프트웨어 개발

라트비아에 본사를 둔 10대 소프트웨어 개발 기업

최신 기사에서 라트비아 최고의 소프트웨어 개발 기업과 그들의 혁신적인 솔루션에 대해 알아보세요. 이러한 기술 리더들이 어떻게 귀사의 비즈니스를 향상시키는 데 도움을 줄 수 있는지 알아보세요.

thecodest
엔터프라이즈 및 스케일업 솔루션

Java 소프트웨어 개발 필수 사항: 성공적인 아웃소싱을 위한 가이드

The Codest로 효율성을 높이고 전문 지식을 활용하며 프로젝트 성공을 이끌 수 있는 성공적인 outsourcing Java 소프트웨어 개발에 대한 이 필수 가이드를 살펴보세요.

thecodest
소프트웨어 개발

폴란드 아웃소싱을 위한 최고의 가이드

폴란드에서 outsourcing가 급증한 것은 경제, 교육, 기술 발전으로 인한 IT 성장과 비즈니스 친화적인 환경이 조성된 덕분입니다.

더코데스트

지식창고를 구독하고 IT 분야의 전문 지식을 최신 상태로 유지하세요.

    회사 소개

    The Codest - 폴란드에 기술 허브를 둔 국제 소프트웨어 개발 회사입니다.

    영국 - 본사

    • 사무실 303B, 182-184 하이 스트리트 노스 E6 2JA
      영국 런던

    폴란드 - 현지 기술 허브

    • 파브리츠나 오피스 파크, 알레야
      포코주 18, 31-564 크라쿠프
    • 뇌 대사관, 콘스트럭터스카
      11, 02-673 바르샤바, 폴란드

      The Codest

    • 홈
    • 회사 소개
    • 서비스
    • Case Studies
    • 방법 알아보기
    • 채용 정보
    • 사전

      서비스

    • IT 자문
    • 소프트웨어 개발
    • 백엔드 개발
    • 프론트엔드 개발
    • Staff Augmentation
    • 백엔드 개발자
    • 클라우드 엔지니어
    • 데이터 엔지니어
    • 기타
    • QA 엔지니어

      리소스

    • 외부 소프트웨어 개발 파트너와의 협력에 대한 사실과 오해
    • 미국에서 유럽으로: 미국 스타트업이 유럽으로 이전을 결정하는 이유
    • 테크 오프쇼어 개발 허브 비교: 테크 오프쇼어 유럽(폴란드), 아세안(필리핀), 유라시아(터키)
    • CTO와 CIO의 주요 과제는 무엇인가요?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • 웹사이트 이용 약관

    저작권 © 2025 by The Codest. 모든 권리 보유.

    ko_KRKorean
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek ko_KRKorean