EFS vs EBS

grovince·2024년 9월 14일

참고 사이트
1. https://aws.amazon.com/ko/blogs/tech/inflab-ec2-spot-instance/
2. https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/preserving-volumes-on-termination.html
3. https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-EFS-%EA%B0%9C%EB%85%90-%EC%9B%90%EB%A6%AC-%EC%82%AC%EC%9A%A9-%EC%84%B8%ED%8C%85-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC

AWS Technic Blog의 “인프랩의 EC2 스팟 인스턴스를 활용한 Jenkins 기반의 CI/CD 구축 사례” 글을 읽던 도중 의문이 생겼다

일단 아래 아키텍처를 보자
Jenkins 기반의 CI/CD 아키텍처이다


해당 아키텍처의 설명으로

Jenkins는 빌드 이력과 설정을 모두 디스크에 파일 형태로 저장하는데, private subnet에 설치된 Jenkins Controller 인스턴스가 종료되는 경우를 대비하여 JENKINS_HOME 경로를 EC2 인스턴스의 EBS가 아닌 EFS 네트워크 드라이브 경로에 설정하는 것이 빌드 이력과 설정, artifact 등을 손실하지 않고 유지할 수 있다

라는 설명이 있다

여기서 하나 궁금한게 생겼다


❓ 왜 EBS가 아닌 EFS에 mount를 해야하는 것일까?

인스턴스가 종료되면 EBS 역시 같이 종료되어서 데이터가 삭제되는 건가?

NO!🙅🏻 EBS 역시 인스턴스가 종료되어도 EBS 볼륨의 DeleteOnTermination 속성 값을 사용하여 영구적으로 데이터를 보존할 수 있다

그럼 왜 EBS가 아닌 EFS에 mount 해야 안정적으로 데이터를 보존할 수 있는 것일까?

바로, EFS와 EBS의 가용성 및 내구성 차이이다


가용성 차이

  • EFS는 여러 가용 영역에 걸쳐 데이터를 자동으로 복제한다
    • 이는 한 가용 영역에 문제가 생겨도 다른 가용영역에서 데이터에 접근할 수 있음을 의미한다
  • EBS는 한 가용영역에만 데이터를 저장한다
    • 이는 해당 가용 영역에 문제가 생기면 데이터 접근이 불가능함을 의미한다

내구성 차이

  • EFS는 다중 AZ 복제로 인해 높은 내구성을 제공한다
  • EBS 역시 높은 내구성을 제공하지만, 단일 AZ에 한정되어 있어 EFS보다 낮을 수밖에 없다

위와 같이 EFS는 데이터를 다중 AZ 복제하기 때문에 EBS 보다 가용성과 내구성이 더 높지만

EFS가 더 가용성이 높다고 무조건 선택하는 것이 아닌, 워크로드의 특성, 성능 요구사항 등 종합적으로 고려하여 EFS와 EBS 중 적절한 스토리지 솔루션을 선택해야 한다

profile
고인물이 되는 그날까지

0개의 댓글