2021 08 26 인프라
2021-08-26 인프라¶
S3¶
- 왜 필요했나요? - 놀토 서비스 특성상 많은 양의 사진을 저장했어야 했음 - S3를 통해 파일 서버를 구축하고 싶었음
-
어떻게 사용했나요? 1. 유일한 이름의 퍼블릭에 공개하지 않는 S3 버킷 만들기 2. WAS EC2에 ec2-s3-deploy IAM 설정을 걸어둠 3. AmazonS3ClientBuilder를 통해 AmazonS3 빈 설정 등록
@Bean public AmazonS3 amazonS3() { return AmazonS3ClientBuilder .standard() .withRegion(region) .build(); }amazonS3.putObject("버킷이름", "파일명", 실제파일)메서드를 활용하여 S3에 저장
- IAM이 뭔가요? - 참고 1: http://wildpup.cafe24.com/archives/929 - 참고 2: https://krauser085.github.io/AWS-02/ - 사실 IAM 설정을 안 해줬다면, 계정 정보에서 AccessKey, SecretKey를 발급받아 이를 통해 인증 절차 필요 - AccessKey, SecretKey를 가진다면 해당 계정의 AWS 자원에 접근 가능! - AWS CLI로 뚝딱뚝딱 가능 - IAM이란? - Identify and Access Management - AWS 리소스를 사용하는 유저/그룹/사용권한 등을 전체적으로 관리하는 서비스 - 그룹/유저를 추가하여 그룹/유저별로 세부적인 리소스 사용권한을 부여/관리 가능 - 이를 통해 리소스에 대한 액세스를 안전하게 제어할 수 있음
- 루트 사용자와 IAM 사용자?
- 참고: https://wonit.tistory.com/348
- 루트 사용자 => 실습 환경 구축/개인서버 오픈 시 그냥 회원가입
- 루트 사용자 == AWS 자원 암거나 다 살 수 있어
- == 탈취당하면 돈 뒤지게 깨짐
- IAM 사용자 => AWS 리소스에 대한 액세스 안전하게 제어

- 다음과 같이 Root Account 몰라도 서로 공유하는 인스턴스에 접근 가능  - 다음과 같이 리소스 접근 권한을 다르게 줄 수 있음 - ec2-s3-deploy 권한을 EC2 IAM에 추가해서 사용하는 중!
도커¶
- 어느 곳에 도커를 사용했나요? - 젠킨스, 엔진엑스, 마리아디비를 인스턴스에서 올릴 때 도커를 사용했습니다
- 왜 도커를 사용했죠? - 솔직히 말하면 팀원의 추천으로 인해 사용 - 학습 차원에서 나도 동의했음
- Snowflake 이슈 때매 도커 쓴다고 적어놨는데 경험해본적 있나요? - snowflake 이슈란 한 번 설치한 서버의 프로그램을 계속해서 설정 변경하고 패치를 적용하면서 서버 구축했을때,,, - scale up을 위해 동일한 환경의 서버를 구축해야할 때 진짜 골때리겠지? - 도커를 사용하면 사용하는 버전, 환경등을 Dockerfile 등으로 기록해두기 때문에 해당 문제로 부터 자유로움
- 환경에 종속되지 않는다는게 좀 이해가 안되네요? - 기본적으로 도커는 리눅스 커널 위에서 돌아간다고 알고 있다. - 따라서 윈도우에서 실컷 개발해놓고 리눅스에 올렸을 때 뻑이나는 현상이 없어진다는 것!
- VM에 비해 도커가 가지는 장점? - VM의 가상화 방식은 OS 가상화,,, 무겁고 느려서 운영환경에서 사용이 불가능했다 - 도커는 프로세스를 격리하는 방식 - CPU/메모리는 해당 프로세스가 필요한 만큼만 추가로 사용! - 성능 손실이 거의 없음
- 이미지 쌓아서 배포해본적? - 두 개 이상의 이미지 풀받은거 겹쳐본적은 없는듯! - 비슷하게 해본적은 있다 (그리고 할 수 있을 것 같다!) - 필요한 프로그램/의존성 설정 pull 받아서 그위에 COPY 할 파일들 넣어두고, - 컨테이너 안에서 돌릴 shell script RUN 돌려본적은 있음!
- 도커파일 써본적있나?
- 있다!
- 엔진엑스 깔아보면서 + jar 고립시켜 돌려버릴때!
FROM nginx COPY nginx.conf /etc/nginx/nginx.conf COPY fullchain.pem /etc/letsencrypt/live/joel-web-hosting.o-r.kr/fullchain.pem COPY privkey.pem /etc/letsencrypt/live/joel-web-hosting.o-r.kr/privkey.pem ############################### FROM openjdk:8 COPY application-oauth.yml application-oauth.yml COPY application-real-db.yml application-real-db.yml COPY app.jar app.jar COPY run1.sh run.sh RUN chmod +x run.sh ENTRYPOINT ["./run.sh"]