|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "[ADR][가상] 아키텍처 의사 결정 기록: Package 접근제어자 사용" |
| 4 | +tags: [ADR] |
| 5 | +--- |
| 6 | +{% include JB/setup %} |
| 7 | + |
| 8 | +Contents: |
| 9 | + |
| 10 | +* [상태](#status) |
| 11 | +* [배경](#context) |
| 12 | +* [결정](#decisions) |
| 13 | + * [이유](#rationale) |
| 14 | +* [결과](#consequences) |
| 15 | +* [결론](#conclusion) |
| 16 | +* [관련 문서 링크](#reference) |
| 17 | +* [대안 고려](#considered_alternatives) |
| 18 | +* [예상되는 리스크 및 대응책](#risks_and_mitigation) |
| 19 | +* [구현 계획](#Implementation_Plan) |
| 20 | +* [비용 및 이점](#Costs_and_Benefits) |
| 21 | +* [결정 후 모니터링](#Monitoring_after_Decision) |
| 22 | + |
| 23 | +## Package 접근제어자 사용 |
| 24 | + |
| 25 | +작성일 : 2024-04-14 |
| 26 | +작성자 : 안정민 |
| 27 | + |
| 28 | +<h2 id="status">상태</h2> |
| 29 | + |
| 30 | +* 수락됨(Accepted) |
| 31 | + |
| 32 | +<h2 id="context">배경</h2> |
| 33 | + |
| 34 | +* [SE-0386](https://github.com/apple/swift-evolution/blob/main/proposals/0386-package-access-modifier.md) 제안서가 Swift 5.9에 추가됨 |
| 35 | +* 현재 수백 개의 모듈을 사용 중 |
| 36 | +* 기존의 Public, Open 접근 제어자만 사용하여 의도하지 않은 인터페이스 공개로 인한 문제 발생 |
| 37 | +* 동일 도메인 내에서만 공유하는 인터페이스를 외부에서 접근하지 못하도록 제한이 필요함 |
| 38 | + |
| 39 | +<h2 id="decisions">결정</h2> |
| 40 | + |
| 41 | +* Package 접근제어자 사용 |
| 42 | + |
| 43 | +<h4 id="rationale">이유</h4> |
| 44 | + |
| 45 | +* 동일 도메인 내에서만 공유하는 인터페이스는 외부에서 접근하지 못하도록 제한 필요 |
| 46 | +* Package 접근제어자를 사용하여 필요한 인터페이스만 Public, Open으로 공개, 다른 모듈의 접근을 차단 |
| 47 | +* 이로써 모듈 간 불필요한 의존성 감소 |
| 48 | + |
| 49 | +<h2 id="consequences">결과 및 영향</h2> |
| 50 | + |
| 51 | +* 개발자들은 Package 접근제어자를 통해 의도하지 않은 인터페이스 공개로 인한 문제 방지 |
| 52 | + |
| 53 | +<h2 id="conclusion">결론</h2> |
| 54 | + |
| 55 | +* 동일 도메인의 모듈 간의 인터페이스는 사용 가능하나, 외부 도메인의 모듈은 접근 불가로 제한 |
| 56 | +* 이는 프로젝트 관리의 효율성 향상에 중요한 역할을 할 것으로 예상됨 |
| 57 | + |
| 58 | +<h2 id="reference">관련 문서 링크</h2> |
| 59 | + |
| 60 | +* [SE-0386](https://github.com/apple/swift-evolution/blob/main/proposals/0386-package-access-modifier.md): Swift 5.9에 추가된 Package 접근제어자 제안서 |
| 61 | + |
| 62 | +<h2 id="considered_alternatives">대안 고려</h2> |
| 63 | + |
| 64 | +* 다른 대안을 고려하지 않았음. Package 접근제어자가 현재 요구사항을 가장 잘 충족시키는 것으로 판단됨. |
| 65 | + |
| 66 | +<h2 id="risks_and_mitigation">예상되는 리스크 및 대응책</h2> |
| 67 | + |
| 68 | +* 예상되는 리스크: 기존 코드에 대한 변경 및 적용 시간이 필요할 수 있음 |
| 69 | +* 대응책: 변경 및 적용 시간을 충분히 확보하고, 변화에 대한 문서화 및 교육을 실시 |
| 70 | + |
| 71 | +<h2 id="Implementation_Plan">구현 계획</h2> |
| 72 | + |
| 73 | +* Package 접근제어자를 적용하기 위한 구체적인 계획을 수립할 예정 |
| 74 | + |
| 75 | +<h2 id="Costs_and_Benefits">비용 및 이점</h2> |
| 76 | + |
| 77 | +* 비용: 초기 적용 및 변경에 따른 비용 발생 |
| 78 | +* 이점: 의도치 않은 인터페이스 공개로 인한 문제를 방지하고, 모듈 간 의존성을 감소시킬 것으로 예상됨 |
| 79 | + |
| 80 | +<h2 id="Monitoring_after_Decision">결정 후 모니터링</h2> |
| 81 | + |
| 82 | +* 결정을 구현하고 나서 해당 결정이 예상대로 작동하는지를 모니터링할 계획 |
0 commit comments