Home > CS > 2024 > πŸ’Ύ [CS] Artifact(μ•„ν‹°νŒ©νŠΈ)λž€ λ¬΄μ—‡μΌκΉŒμš”?

πŸ’Ύ [CS] Artifact(μ•„ν‹°νŒ©νŠΈ)λž€ λ¬΄μ—‡μΌκΉŒμš”?
CS

πŸ’Ύ [CS] Artifact(μ•„ν‹°νŒ©νŠΈ)λž€ λ¬΄μ—‡μΌκΉŒμš”?

  • ArtifactλŠ” μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ—μ„œ λΉŒλ“œλ‚˜ 배포의 결과물을 μ§€μΉ­ν•˜λŠ” μš©μ–΄μž…λ‹ˆλ‹€.
  • 개발 μž‘μ—…μ˜ μ‚°μΆœλ¬Όλ‘œ, ν”„λ‘œμ νŠΈκ°€ μ‹€ν–‰ κ°€λŠ₯ν•œ μƒνƒœλ‚˜ 배포 κ°€λŠ₯ν•œ μƒνƒœλ‘œ λ³€ν™˜λ  λ•Œ μƒμ„±λ˜λŠ” λͺ¨λ“  νŒŒμΌμ„ ν¬ν•¨ν•©λ‹ˆλ‹€.
  • ArtifactλŠ” μ†ŒμŠ€ μ½”λ“œκ°€ λΉŒλ“œ, ν…ŒμŠ€νŠΈ, 그리고 νŒ¨ν‚€μ§• 단계λ₯Ό κ±°μΉ˜λ©΄μ„œ λ§Œλ“€μ–΄μ§€λ©°, μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ‹€ν–‰ν•˜κ±°λ‚˜ λ°°ν¬ν•˜λŠ” 데 ν•„μš”ν•œ 핡심 ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€.

1️⃣ Artifact의 μ£Όμš” 예.

1️⃣ 컴파일된 λ°”μ΄λ„ˆλ¦¬ 파일.

  • .jar, .war, .ear 파일(Java).
  • .dll(Windows 라이브러리).
  • .exe(μ‹€ν–‰ 파일).

2️⃣ 라이브러리 파일.

  • μ™ΈλΆ€μ—μ„œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ .jar λ˜λŠ” .so 와 같은 파일.

3️⃣ μ„€μΉ˜ νŒ¨ν‚€μ§€.

  • μ„€μΉ˜ κ°€λŠ₯ν•œ 배포물(예: .deb, .rpm, .msi, .apk, ,ipa).

4️⃣ ν…ŒμŠ€νŠΈ 리포트.

  • λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€ 쀑 μƒμ„±λœ ν…ŒμŠ€νŠΈ κ²°κ³Ό 파일(HTML, XML λ“±).

5️⃣ μ†ŒμŠ€ μ½”λ“œ λ²ˆλ“€.

  • 배포 λ˜λŠ” μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•΄ ν¬ν•¨λœ μ†ŒμŠ€ μ½”λ“œ 파일.

6️⃣ λ„νλ©˜νŠΈ.

  • ν”„λ‘œμ νŠΈ λ¬Έμ„œ, API μ„€λͺ…μ„œ(예: Javadoc, Markdown 파일)

2️⃣ Artifact의 ν™œμš©.

1️⃣ CI/CD νŒŒμ΄ν”„λΌμΈ.

  • Continuous Integration/Continuous Deployment(CI/CD) κ³Όμ •μ—μ„œ μƒμ„±λœ μ•„ν‹°νŒ©νŠΈλ₯Ό μ €μž₯ν•˜κ³  이후 배포 νŒŒμ΄ν”„λΌμΈμ—μ„œ μ‚¬μš©ν•©λ‹ˆλ‹€.

2️⃣ μ•„ν‹°νŒ©νŠΈ μ €μž₯μ†Œ.

  • μƒμ„±λœ μ•„ν‹°νŒ©νŠΈλ₯Ό μ €μž₯ν•˜κ³  κ³΅μœ ν•˜κΈ° μœ„ν•΄ Artifactory, Nexus Repository, GitHub Packages 같은 μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

3️⃣ 배포 및 μ‹€ν–‰.

  • μ΅œμ’… μ‚¬μš©μžμ—κ²Œ μ „λ‹¬ν•˜κ±°λ‚˜ μ„œλ²„ ν™˜κ²½μ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.

4️⃣ 버전 관리.

  • μ•„ν‹°νŒ©νŠΈλŠ” 버전 번호λ₯Ό 톡해 μΆ”μ λ˜λ©°, νŠΉμ • λ²„μ „μœΌλ‘œ λ‘€λ°±ν•˜κ±°λ‚˜ 디버깅할 수 μžˆμŠ΅λ‹ˆλ‹€.

3️⃣ μ•„ν‹°νŒ©νŠΈμ˜ μ€‘μš”μ„±.

  • μž¬ν˜„μ„± : λ™μΌν•œ μ†ŒμŠ€ μ½”λ“œλ‘œ λ™μΌν•œ 결과물을 λ‹€μ‹œ 생성할 수 있음.
  • 이식성 : ν•˜λ‚˜μ˜ μ‹€ν–‰ νŒŒμΌμ΄λ‚˜ νŒ¨ν‚€μ§€λ₯Ό λ‹€μ–‘ν•œ ν™˜κ²½μ— 배포 κ°€λŠ₯.
  • 좔적 κ°€λŠ₯μ„± : νŠΉμ • λ²„μ „μ˜ μ†ŒμŠ€ μ½”λ“œμ™€ κ΄€λ ¨λœ μ•„ν‹°νŒ©νŠΈλ₯Ό μ‰½κ²Œ 식별할 수 있음.
  • μžλ™ν™” 지원 : CI/CD νŒŒμ΄ν”„λΌμΈμ—μ„œ 배포λ₯Ό μžλ™ν™”ν•˜κΈ° μœ„ν•œ 핡심 μš”μ†Œ.

4️⃣ 예제: Java ν”„λ‘œμ νŠΈμ—μ„œ μ•„ν‹°νŒ©νŠΈ.

1️⃣ Maven ν”„λ‘œμ νŠΈ.

  • Maven λΉŒλ“œ 도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ pom.xml에 μ •μ˜λœ λŒ€λ‘œ .jar λ˜λŠ” .war νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€.
    mvn package
    
  • μ‹€ν–‰ κ²°κ³Ό: target/myapp-1.0.jar(μ•„ν‹°νŒ©νŠΈ)

2️⃣ Gradle ν”„λ‘œμ νŠΈ.

  • Gradleμ—μ„œλŠ” build.gradle νŒŒμΌμ„ 기반으둜 λΉŒλ“œν•œ λ’€ .jar νŒŒμΌμ„ μƒμ„±ν•©λ‹ˆλ‹€.
    gradle build
    
  • μ‹€ν–‰ κ²°κ³Ό: build/libs/myapp-1.0.jar(μ•„ν‹°νŒ©νŠΈ)

5️⃣ μš”μ•½.

  • μ•„ν‹°νŒ©νŠΈλŠ” μ†Œν”„νŠΈμ›¨μ–΄ 개발의 결과물둜, λΉŒλ“œ, ν…ŒμŠ€νŠΈ, νŒ¨ν‚€μ§• λ“± 개발 κ³Όμ •μ˜ 핡심 μ‚°μΆœλ¬Όμž…λ‹ˆλ‹€.
    • μ΄λŠ” 배포와 μ‹€ν–‰μ˜ κΈ°λ³Έ λ‹¨μœ„λ‘œ μ‚¬μš©λ˜λ©°, μžλ™ν™”λœ 배포 ν™˜κ²½(CI/CD)μ—μ„œ 맀우 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.