less than 1 minute read


study

msa

따라하던 중, k8s depl config에서 리소스 리밋을 설정하라고 해서 기본? 자동완성으로 리소스 제한을 두었는데, 아래와 같았다.

...
resources: 
  limits:
    memory: "128Mi"
    cpu: "500m"

그런데, 서비스가 실행되지 않고 Killed가 뜨면서 죽는 현상이 발생했다. 리소스 제한을 해제하고 다시 실행해보니 되어서, 메모리와 cpu를 늘려가며 실행했고, 메모리를 256Mi로 늘리니 실행이 되었다.

rust

에러 핸들링도 예술 그 자체인듯.

if 문도 필요 없다. match나 switch도 필요 없다. ?면 충분하다.. 다만, 함수 표현에서 에러 종류를 나타내게 되는데, 더 복잡하고 다양한 종류의 에러가 날 수 있는 상황에서는 어떻게 할 지 모르겠다. 그냥 Result<String, Err>로 선언해서 하려나.

아래 코드와,

...
    let qty = item_quantity.parse::<i32>();

    match qty {
        Ok(val) => Ok(val * cost_per_item + processing_fee),
        Err(val) => Err(val),
    }
...

아래 코드가,

...
    let qty = item_quantity.parse::<i32>()?;

    Ok(qty * cost_per_item + processing_fee)
...

같은 기능을 한다!

main 함수 자체도 Result<(), Err>형을 반환하게 선언하고, 끝 부분에서 Ok(())를 리턴하도록 하여 ?를 사용하거나, if let 등으로 분기 처리를 할 수도 있다.

Box<dyn Error>

가 any 타입의 에러를 나타낸다. 어떻게 그런건지 아직 잘 모르겠다.


Comments