πŸ“œ λͺ©μ°¨

μ•Œκ³ λ¦¬μ¦˜

κΈ°λŠ₯개발

NestJS

Microservice

μ•Œκ³ λ¦¬μ¦˜

πŸ’­ κΈ°λŠ₯개발

// 각 κΈ°λŠ₯은 진도가 100%일 λ•Œ μ„œλΉ„μŠ€μ— λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
// 또, 각 κΈ°λŠ₯의 κ°œλ°œμ†λ„λŠ” λͺ¨λ‘ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 뒀에 μžˆλŠ” κΈ°λŠ₯이 μ•žμ— μžˆλŠ” κΈ°λŠ₯보닀 λ¨Όμ € 개발될 수 있고, 
// μ΄λ•Œ 뒀에 μžˆλŠ” κΈ°λŠ₯은 μ•žμ— μžˆλŠ” κΈ°λŠ₯이 배포될 λ•Œ ν•¨κ»˜ λ°°ν¬λ©λ‹ˆλ‹€.

// λ¨Όμ € λ°°ν¬λ˜μ–΄μ•Ό ν•˜λŠ” μˆœμ„œλŒ€λ‘œ μž‘μ—…μ˜ 진도가 적힌 μ •μˆ˜ λ°°μ—΄ progresses와 
// 각 μž‘μ—…μ˜ 개발 속도가 적힌 μ •μˆ˜ λ°°μ—΄ speedsκ°€ μ£Όμ–΄μ§ˆ λ•Œ 
// 각 λ°°ν¬λ§ˆλ‹€ λͺ‡ 개의 κΈ°λŠ₯이 λ°°ν¬λ˜λŠ”μ§€λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜μ„Έμš”.

// μž‘μ—…μ˜ 개수(progresses, speedsλ°°μ—΄μ˜ 길이)λŠ” 100개 μ΄ν•˜μž…λ‹ˆλ‹€.
// μž‘μ—… μ§„λ„λŠ” 100 미만의 μžμ—°μˆ˜μž…λ‹ˆλ‹€.
// μž‘μ—… μ†λ„λŠ” 100 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
// λ°°ν¬λŠ” ν•˜λ£¨μ— ν•œ 번만 ν•  수 있으며, ν•˜λ£¨μ˜ 끝에 이루어진닀고 κ°€μ •ν•©λ‹ˆλ‹€.
// 예λ₯Ό λ“€μ–΄ μ§„λ„μœ¨μ΄ 95%인 μž‘μ—…μ˜ 개발 속도가 ν•˜λ£¨μ— 4%라면 λ°°ν¬λŠ” 2일 뒀에 μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

// ν’€λ‹€ 만 μ½”λ“œ~ 
function solution(progresses, speeds) {
    let answer = []
    let day = []
    let count = 0
    let temp = 0

    
    for(let i = 0 ;i < progresses.length ; i++){
        day[i] = Math.ceil((100-progresses[i]) / speeds[i])
    }
    
    for(let i = 0 ; i < day.length ; i++){
        if(day[i]>day[i+1]) {
            count++
            answer.push(count)
            temp = day[i]
						if(temp>day[i])
        }
    }
    
    return answer 
}

// λ©˜ν† λ‹˜ μ½”λ“œγ… _γ… 
function solution(progresses, speeds) {
    const answer=[]
    let day = 0
    
    for (let i = 0 ; i < progresses.length ; i++){
        // 100% μ™„μ„±κΉŒμ§€ 며칠이 κ±Έλ¦¬λŠ”μ§€
        const process = Math.ceil( (100 - progresses[i]) / speeds[i])
        if ( process > day ) {
            day = process
            answer[ answer.length ] = 1
        } else if( day >= process ){
            //  개발이 μ™„λ£Œλμ§€λ§Œ μ•žμ—μžˆλŠ” κΈ°λŠ₯이 완성될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ” 경우
            answer[answer.length -1]++
        }
    }
    return answer
}

// reduce() μ‚¬μš©ν•œ 풀이
function solution(progresses, speeds) {
    let day = 0
    const answer = progresses.reduce( ( acc, cur ,i  ) => {
        const process = Math.ceil( (100 - cur) /  speeds[i] )
        
        if( process > day ) {
            day = process
            acc[acc.length] = 1
        } else if(day>= process){
            acc[acc.length -1]++
        }
        return acc
    }, [])
    return answer
}

NestJS


1. Microservice

<aside> ❗ Nestjs 폴더 λ‚˜λˆ„κΈ°, DB도 같이 λ‚˜λˆ„κΈ°

</aside>

Untitled

Untitled

<aside> πŸ€” μ™œ 마이크둜 μ„œλΉ„μŠ€λ₯Ό 써야돼?

  1. μ†ŒμŠ€μ½”λ“œ 전체λ₯Ό λΉŒλ“œ ν•˜κ³  배포 ν•˜λ €λ©΄ μ‹œκ°„μ΄ μ˜€λž˜κ±Έλ¦¬λŠ”λ°, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ 배포 μ‹œκ°„μ„ 쀄일 수 μžˆμ–΄! ( κ²Œμ‹œνŒ APIκ°€ λ³€κ²½λ˜λ©΄ 전체 APIλ₯Ό λ³€κ²½ν•˜λŠ” 것이 μ•„λ‹ˆλΌ κ²Œμ‹œνŒ ν΄λ”λ§Œ λ‹€μ‹œ 배포 )
  2. μ—λŸ¬λ‚˜ μž₯μ•  μ‹œμ— 처리λ₯Ό 쒀더 μš©μ΄ν•˜κ²Œ ν•  수 μžˆμ–΄! (λͺ¨λ“  APIλ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ²Œ λ˜λŠ” λŒ€μ‹ μ— κ²Œμ‹œνŒ μ„œλΉ„μŠ€λ§Œ μ‚¬μš© λΆˆκ°€λŠ₯)
  3. λ‹€μ–‘ν•œ 개발자λ₯Ό μ±„μš©ν•  수 μžˆμ–΄! (Nestjsλ₯Ό μ‚¬μš©ν•˜λŠ” 개발자만만 뽑을 수 μžˆλŠ”κ²Œ μ•„λ‹ˆλΌ APIλ§ˆλ‹€ λ‹€λ₯Έ ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜λŠ” 개발자λ₯Ό 뽑을 수 μžˆλ‹€!)

</aside>

<aside> ❗ μ΄λŸ¬ν•œ μž₯점듀이 μžˆλŠ” λŒ€μ‹ μ— 전체적인 기술 λ³΅μž‘λ„κ°€ μ¦κ°€ν•œλ‹€λŠ” 단점이 μžˆλ‹€! β†’ λ”°λΌμ„œ μž‘μ€ μ„œλΉ„μŠ€λ³΄λ‹€λŠ” 큰 μ„œλΉ„μŠ€μ—μ„œ 많이 μ‚¬μš©λœλ‹€! ν•„μˆ˜λŠ” μ•„λ‹˜!

</aside>


πŸ’»Β  μ‹€μŠ΅ - Microservice Architecture κ΅¬ν˜„ (κΈ°λ³Έμ…‹νŒ…)

  1. nestjsμ„€μΉ˜
  2. ‼️  .git 파일 μ§€μš°κΈ°!!! (μ•ˆμ§€μš°λ©΄ λ‚˜μ€‘μ— commit / push ν•  λ•Œ 꼬일 κ°€λŠ₯성이 μžˆλ‹€! )