πŸ§‘πŸ»‍πŸ’» Develop 8

GitHub μ—μ„œ EC2 둜 μžλ™ 배포(CD) λ„μž…ν•˜κΈ° (AWS)

μžλ™ 배포(CD) μ™œ ν•„μš”ν•œκ°€? ν”„λ‘œμ νŠΈλ₯Ό 진행 쀑 일정 λ‹¨μœ„μ˜ 개발이 μ™„λ£Œλœλ‹€λ©΄, λ³€κ²½ λ‚΄μš©μ„ μ‹€μ œ μ„œλ²„μ— λ°˜μ˜ν•˜κΈ° μœ„ν•œ Deployment λ₯Ό μ§„ν–‰ν•˜κ²Œ λœλ‹€. ν•˜μ§€λ§Œ, μ΄λŸ¬ν•œ Deploy μž‘μ—…μ΄ 무언가 νŠΉλ³„ν•œ μƒˆλ‘œμš΄ 과정이 μžˆλŠ” 것이 μ•„λ‹ˆλΌ 늘 같은 과정을 λ°˜λ³΅ν•˜λŠ” 것이기 λ•Œλ¬Έμ—, 개발 이외에 λ§Žμ€ 곡수λ₯Ό μž‘μ•„λ¨ΉλŠ” μž‘μ—… 쀑 ν•˜λ‚˜μ΄λ‹€. 그리고, μ‹€μ œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μš΄μ˜ν•¨μ— μžˆμ–΄μ„œλ„ μ΄λŸ¬ν•œ Deploy μž‘μ—…μ„ 인간이 μˆ˜λ™μœΌλ‘œ μ‹€μ‹œν•˜λ‹€λ³΄λ©΄, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ³€κ²½ λ‚΄μš©κ³Ό 관계없이 μ‚¬λžŒμ˜ μ‹€μˆ˜λ‘œ μΈν•œ μž₯μ• κ°€ λ°œμƒν•˜κΈ°λ„ ν•œλ‹€. μ΄λ ‡κ²Œ Deploy μž‘μ—…μ— λΆˆν•„μš”ν•˜κ³  λΉ„νš¨μœ¨μ μœΌλ‘œ λ§Žμ€ μ‹œκ°„μ„ μ†Œλͺ¨ν•œλ‹€λ©΄, μ΄λŠ” μœ μ €μ— λŒ€ν•œ μƒˆλ‘œμš΄ κΈ°λŠ₯κ³Ό μ„œλΉ„μŠ€ 제곡이 λŠ¦μ–΄μ§μ„ μ˜λ―Έν•œλ‹€. κ·Έλž˜μ„œ μ΄λŸ¬ν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ…Έλ ₯으둜 많..

AWS 둜 Web Application Architecture κ΅¬μ„±ν•˜κΈ° (1)

Web application κΈ°λ³Έ ꡬ성 Client와 Server둜 κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. λˆ„κ΅¬λ‚˜ μΈν„°λ„·μ—λ§Œ μ—°κ²°λ˜μ–΄ μžˆλ‹€λ©΄, μ œν•œ 없이 Server에 접속할 수 μžˆλ‹€. 일반적인 Port 80 을 μ‚¬μš©ν•˜λŠ” Web ServerλΌλŠ” μ „μ œν•˜μ— User κ°€ λΈŒλΌμš°μ €μ— URL 을 μž…λ ₯ν•˜λ©΄, ClientλŠ” Server 에 Requestλ₯Ό 보낸닀. 그리고 Server λŠ” 이에 λŒ€ν•œ Response둜 λ‹€μ–‘ν•œ 정보λ₯Ό Clientμ—κ²Œ 보낸닀. HTML, CSS, JS Image, Video etc... Web Application Architecture μ„œλΉ„μŠ€μ˜ ꡬ성이 λ‹¨μˆœν•˜κ³ , 이용자 μˆ˜κ°€ 적을 λ•Œ μ„œλΉ„μŠ€μ˜ ꡬ성이 λ³΅μž‘ν•˜κ³ , 이용자 μˆ˜κ°€ λ§Žμ„ λ•Œ μ„œλΉ„μŠ€κ°€ λ‹€μ–‘ν•˜κ³  λ³΅μž‘ν•΄μ§ˆμˆ˜λ‘ Web application을 μ•ˆμ •μ μœΌλ‘œ μš΄μ˜ν•˜κΈ° ..

Pull Requests 에 μžλ™μœΌλ‘œ Labels μ μš©ν•˜κΈ° (2) - Pull Request Labeler

Pull Request Labeler 적용 μ΄λ²ˆμ—λŠ” Pull Request Labeler plugins을 μ‚¬μš©ν•˜μ—¬, λ³€κ²½λœ 파일 λ˜λŠ” 디렉터리λ₯Ό ν™•μΈν•˜κ³  μžλ™μœΌλ‘œ label 이 μΆ”κ°€λ˜λ„λ‘ ν•  것이닀. .github/workflows/labeler.yml : Pull Request Labeler κ°€ 싀행될 쑰건에 λŒ€ν•œ workflowsλ₯Ό μž‘μ„± .github/labeler.yml : μ§€λ‚œλ²ˆμ— μ‚¬μš©ν•œ μ„€μ • νŒŒμΌμ— μ΄μ–΄μ„œ μž‘μ„±ν•΄λ„ 무방 μ‹€ν–‰ 쑰건 μ •μ˜ .github/workflows/labeler.yml pull request κ°€ opened λ˜λŠ” reopened λ˜μ—ˆμ„ λ•Œ, 그리고 PR에 μƒˆλ‘œμš΄ Commit 이 Push λ˜μ—ˆμ„ λ•Œ μ‹€ν–‰λ˜λ„λ‘ ν•˜κΈ° μœ„ν•΄ μ•„λž˜μ™€ 같이 μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ˜€λ‹€. μ§€λ‚œλ²ˆκ³Ό λ‹€λ₯Έ 점이 μžˆλ‹€λ©΄..

Pull Requests 에 μžλ™μœΌλ‘œ Labels μ μš©ν•˜κΈ° (1) - Auto Labeler

GitHub Labels μ΄λž€? GitHub Label 은 Pull Requests (μ΄ν•˜ PR) λ˜λŠ” Issues μ—μ„œ μΉ΄ν…Œκ³ λ¦¬λ₯Ό λΆ„λ₯˜ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λœλ‹€. GitHub μ—μ„œλ„ 이미 기본적으둜 9개의 Labels λ₯Ό μ œκ³΅ν•˜κ³  μžˆλ‹€. νŒ€ ν”„λ‘œμ νŠΈλ₯Ό ν•˜κ³  μžˆλ‹€λ©΄ μ—¬λŸ¬ λͺ…μ˜ νŒ€μ›μ΄ 각자의 μž‘μ—… λ‚΄μš©μ„ μ—¬λŸ¬ 개의 PR 을 λ§Œλ“€μ–΄ 병합할텐데, 이 λ•Œ Labels 을 μ‚¬μš©ν•œλ‹€λ©΄ 보닀 효율적으둜 μž‘μ—… λ‚΄μš©(PR)듀을 관리할 수 μžˆλ‹€. Auto Labeler 적용 GitHub actions 에 Auto Labeler plugins 을 μ μš©ν•˜μ—¬ μ‚¬μš©ν•  것이닀. κ·Έ μ€‘μ—μ„œλ„ Auto Labeler λ₯Ό μ‚¬μš©ν•˜μ—¬ PR 의 Title μ΄λ‚˜ Description 에 νŠΉμ • λ‚΄μš©μ΄ μΆ”κ°€ λ˜μ—ˆμ„ λ•Œ GitHub actions κ°€ μž‘λ™..

νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ AWS κ΄€λ¦¬ν•˜κΈ° (3) - 개발용 IAM μ‚¬μš©μž

개발용 IAM μ‚¬μš©μž 생성 κ·Έλ ‡λ‹€λ©΄, μ‹€μ œλ‘œ κ°œλ°œμ„ ν•˜λ©΄μ„œ AWS λ₯Ό μ‚¬μš©ν•  νŒ€μ›λ“€μ—κ²ŒλŠ” μ–΄λ–»κ²Œ IAM μ‚¬μš©μžλ₯Ό λ§Œλ“€μ–΄ μ£Όλ©΄ 될까? κΈ°λ³Έμ μœΌλ‘œλŠ” νŠΉμ • μ„œλΉ„μŠ€ λ˜λŠ” νŠΉμ • λ™μž‘μ— λŒ€ν•΄μ„œ μ‚¬μš©μž λ³„λ‘œ λ”°λ‘œ κΆŒν•œμ„ μ„€μ •ν•  수 μžˆμ§€λ§Œ, λ¨Όμ € λͺ¨λ“  μ„œλΉ„μŠ€μ— μ•‘μ„ΈμŠ€ ν•  수 μžˆλ„λ‘ ν•˜λŠ” PowerUserAccess κΆŒν•œμ„ λΆ€μ—¬ν•˜μ—¬ IAM 개발용 IAM μ‚¬μš©μžλ₯Ό λ§Œλ“€μ–΄ λ³Ό 것이닀. (μ§€λ‚œ λ²ˆμ— λ§Œλ“  Administrators 계정과 달리 μœ μ € κ΄€λ¦¬λ§Œ ν•  수 μ—†λ‹€.) PowerUser (IAM μ‚¬μš©μž) μΆ”κ°€ IAM μ½˜μ†”λ‘œ μ΄λ™ν•˜μ—¬, μ™Όμͺ½μ˜ λŒ€μ‹œλ³΄λ“œμ—μ„œ Users - Add User λ₯Ό 눌러 μ‚¬μš©μž μΆ”κ°€ ν™”λ©΄μœΌλ‘œ μ΄λ™ν•œλ‹€. 그리고 μ•„λž˜μ™€ 같이 User name κ³Ό access type 을 μ„€μ •ν•œλ‹€. λ³Έ κΈ€μ—μ„œ μ„ νƒν•œ Acc..

νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ AWS κ΄€λ¦¬ν•˜κΈ° (2) - κ΄€λ¦¬μš© IAM μ‚¬μš©μž

μ§€λ‚œ 글에 μ΄μ–΄μ„œ μ‹€μ œλ‘œ κ΄€λ¦¬μš© IAM μ‚¬μš©μžλ₯Ό 생성해 λ³Ό 것이닀. μ΄λ ‡κ²Œ μƒμ„±ν•œ κ΄€λ¦¬μš© IAM μ‚¬μš©μžλŠ” μ‹€μ œλ‘œ Root μ‚¬μš©μžμ™€ 같이 AWS μ„œλΉ„μŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•˜μ—¬ μ‚¬μš©λ˜μ–΄ 질 수 μžˆλ‹€. κ΄€λ¦¬μš© IAM μ‚¬μš©μž 생성 IAM μ‚¬μš©μž μΆ”κ°€ ν™”λ©΄μœΌλ‘œ 이동 μƒλ‹¨μ˜ 탐색 ν‘œμ‹œμ€„μ—μ„œ IAM λ₯Ό κ²€μƒ‰ν•˜μ—¬, IAM λŒ€μ‹œλ³΄λ“œλ‘œ μ΄λ™ν•œλ‹€. 그리고 쒌츑의 Users λ₯Ό ν΄λ¦­ν•˜κ³  Add users λ₯Ό ν΄λ¦­ν•˜μ—¬, IAM μ‚¬μš©μž μΆ”κ°€λ₯Ό μ‹œμž‘ν•œλ‹€ κ΄€λ¦¬μž 역할을 ν•  μ‚¬μš©μžλ₯Ό μΆ”κ°€ν•  것이기 λ•Œλ¬Έμ— User name 을 [Administrator] 둜 μž…λ ₯ν•΄μ£Όκ³ , access type 은 [Password - AWS Management Console access] 을 μ„ νƒν•˜μ—¬, AWS 의 μ›Ή νŽ˜μ΄μ§€λ₯Ό 톡해 둜그인 ν•  수 μžˆλ„λ‘ ν•΄μ€€λ‹€..

νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ AWS κ΄€λ¦¬ν•˜κΈ° (1) - IAM μ‚¬μš©μž

IAM μ‚¬μš©μžμ˜ ν•„μš”μ„±μ„ λŠλΌλ‹€! AWSλ₯Ό νŒ€ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•˜κ³  μ‹Άλ‹€... ν˜„μž¬ μ›Ή μ„œλΉ„μŠ€ κ°œλ°œμ„ κ³΅λΆ€ν•˜κ³  μžˆλ‹€λ©΄, λˆ„κ΅¬λ‚˜ ν•œ 번 쯀은 ν”„λ‘œμ νŠΈλ₯Ό ν•˜κ²Œ 될 것이고, μžκΈ°κ°€ 직접 λ§Œλ“  μ„œλΉ„μŠ€λ₯Ό μ—¬λŸ¬ μ‚¬λžŒμ—κ²Œ κ³΅μœ ν•΄λ³΄κ³  μ‹Άλ‹€κ³  μƒκ°ν•œλ‹€λ©΄ AWS 와 같은 ν΄λΌμš°λ“œ μ»΄ν“¨νŒ… μ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜κ²Œ 될 것이닀. 이 λ•Œ, 1인 ν”„λ‘œμ νŠΈλ₯Ό ν•œλ‹€κ±°λ‚˜ νŒ€μ΄λ”λΌλ„ ν•œ λͺ…λ§Œ μ„œλ²„ 관리λ₯Ό λ‹΄λ‹Ήν•˜κ³  μžˆλ‹€λ©΄, AWS 계정 ν•˜λ‚˜λ§ŒμœΌλ‘œλ„ μΆ©λΆ„νžˆ ν΄λΌμš°λ“œ ν™˜κ²½λ“€μ„ 관리할 수 μžˆμ„ 것이닀. ν•˜μ§€λ§Œ, νŒ€ λ‚΄μ—μ„œ μ—¬λŸ¬ μ‚¬λžŒμ΄ Back End λ₯Ό μ—­ν•  λΆ„λ‹΄ν•˜μ—¬ λ‹΄λ‹Ήν•˜κ²Œ λœλ‹€λ©΄, ν•˜λ‚˜μ˜ AWS 계정에 μ—¬λŸ¬ μ‚¬λžŒμ΄ μ ‘κ·Όν•  ν•„μš”μ„±μ„ 느끼게 될 것이닀. ν•˜μ§€λ§Œ, 개인 계정을 νŒ€μ›λ“€κ³Ό κ³΅μœ ν•˜κΈ°μ—λ„ μ°μ°ν•˜κ³ , κ·Έλ ‡λ‹€κ³  AWS λ₯Ό μ‚¬μš©ν•  νŒ€μ› λͺ¨λ‘κ°€ 계정을..

사내 툴 ν”„λ‘œμ νŠΈμ— CI λ„μž…ν•˜κΈ°

μ‹œμž‘ν•˜κΈ° 전에 λ„μž…ν•˜κ²Œ 된 계기 ν˜„μž¬ λ‚˜λŠ” 뢀동산 정보λ₯Ό κ²Œμ‹œ μ›Ή μ„œλΉ„μŠ€λ₯Ό μš΄μ˜ν•˜λŠ” λΆ€μ„œμ—μ„œ κ·Όλ¬΄ν•˜κ³  μžˆλ‹€. κ³Όκ±°λΆ€ν„° ν˜„μž¬κΉŒμ§€ μ§‘μ λœ μˆ˜μ—†μ΄ λ§Žμ€ 뢀동산 정보λ₯Ό κ²Œμ‹œν•˜κ³  있기 λ•Œλ¬Έμ—, 뢀동산 νšŒμ‚¬λ‚˜ 건물 관리 νšŒμ‚¬ λ“±μœΌλ‘œλΆ€ν„° 정보 μˆ˜μ • μš”μ²­μ΄ λ‹€μ–‘ν•˜κ²Œ λ“€μ–΄μ˜¨λ‹€. μ΄λŸ¬ν•œ 정보 μˆ˜μ • μš”μ²­λ“€μ€ 고객 λŒ€μ‘ λΆ€μ„œμ—μ„œ μ‚¬μš©ν•˜λŠ” 사내 νˆ΄μ— μ ‘μˆ˜λ˜λŠ”λ°, 이 사내 툴 ν”„λ‘œμ νŠΈλ₯Ό μš΄μ˜ν•˜κ³  μœ μ§€ λ³΄μˆ˜ν•˜λŠ” 것도 λ‹Ήμ—°νžˆ λ‚΄κ°€ μ†Œμ†λœ λΆ€μ„œμ—μ„œ λ‹΄λ‹Ήν•˜κ³  μžˆλ‹€. 일뢀 μ†Œμˆ˜ μœ μ €λ§Œ μ‚¬μš©ν•˜λŠ” 사내 툴이기 λ•Œλ¬Έμ—, κΈ°λŠ₯ μΆ”κ°€λ‚˜ μ†ŒμŠ€ μ½”λ“œ 변경도 자주 μ—†λ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— ν”„λ‘œμ νŠΈμ— Linter Check λ‚˜ Unit test, μžλ™ 배포 등은 μ „ν˜€ λ„μž…λ˜μ–΄ μžˆμ§€ μ•Šμ•˜λ‹€. ν•˜μ§€λ§Œ, μž₯기적인 개발 μƒμ‚°μ„±μ˜ ν–₯상을 μœ„ν•΄ CI/CD λ„μž…μ΄ ν•„μš”..