2019/11 12

[Github] git reset 작업 취소 방법

오늘 파이썬 코드 작업 도중 git에 올려야 하는 코드를 제외하고 commit메시지를 작성하였다. commit을 취소 하기 위해 git reset --hard HEAD^ 를 입력하여 commit을 취소하고 다시 git add 를 실행하는데 Nothing to Commit이라고 출력이 되었다. 다시 깃허브 명령어를 보니 --soft 옵션이 아니고 --hard옵션으로 실행되어 commit이 취소되는 동시에 해당 파일들은 예전 코드로 변경이 되어 있었다. 흘려본적 없는 식은땀이 났고, 고객사에 제출해야하는데 코드가 모두 날아가서 매우 당황스러웠다. git-scm을 찾아서 되돌릴 방법을 찾아 본 결과 획기적인(그 당시의 나에게만) 명령어가 있었다. 그 명령어는 다음과 같다. SYNOPSIS git reflog ..

IT/Git 2019.11.26

20191126 회고 - 프로그래밍 패턴

1. 예외 처리 def S3ObjectDownload(bucket, key): # S3에 자원에 접근 할 access key와 secret key를 입력합니다. s3 = boto3.resource('s3', aws_access_key_id='', aws_secret_access_key='YOUR_SECRET_KEY') # 추출 된 key에서 경로 값을 제외한 순수 파일 명을 얻기 위한 작업 preOutPutName = key.split('/') outPutName = preOutPutName[-1] # 파라미터로 받은 값을 이용하여 가장 최근에 올린 파일을 EC2로 다운로드 s3.Bucket(bucket).download_file(key, outPutName) print("Download successf..

회고 2019.11.26

[Spring] Servlet의 동작 과정과 메모리 적재

어제 학습한 servlet에 대해 의문점이 생겼다. Chrome에서 servlet을 1회 최초 호출하고, Safari에서 servlet을 1회 호출한 결과는 위 사진과 같이 나왔다. 2번 호출 했으니, init 매서드가 2번 호출 될 것이라고 생각했었는데 아니었다. 그 이유는 다음과 같다. 서블릿의 동작과정을 한눈에 보기 쉽게 다이어그램으로 정리해보았다. Servlet는 최초 호출이 되면 해당 selvlet은 메모리에 적재됩니다. 그 이후로 다른곳에서도 중복 호출 하게 되면, 똑같이 Servlet를 불러오는 것이 아니라, 메모리에 적재된 Servlet을 재사용해서 사용자와의 인터페이스를 제공한다고 한다. Servlet는 메모리에 이미 init()이 실행된 채로 메모리에 적재되어 있기 때문에 또 다시 같은..

IT/Java Spring 2019.11.19

NoSQL vs RDS

1. why we use noSQL 유연성 : rdb와 비교하여, 유연한 스키마를 제공하고 있기 때문에 데이터베이스를 반정형 또는 비정형적인 데이터를 취급하는데 유리하다. 이러한 스키마는 빠르고 반복적인 개발을 유도하게 된다. 확장성 : noSQL 데이터베이스는 고가의 스펙이 뛰어난 서버 대신, 분산형 클러스터를 이용하기 때문에, 서버 운영에 대한 부담 절감과 더 적은 스트리지를 기반으로 운영 할 수 있게 됨에 따라 더 많은 데이터를 담을 수 있게 되었다. 고성능 : 특정 비정형 데이터(document, key-value, graph … ) 및 엑세스 패턴에 대해 특화시킬 수 있기 때문에 특정 워크로드를 유사하게 받아들이는 것이 아닌 그대로 받아들일 수 있게 된다. 이에 따라 유사한 환경을 제공하는 rd..

IT/NOSQL 2019.11.19

[DynamoDB] Amazon DynamoDB 구성 요소

Table of content 1. 테이블 2. 항목(Item) 3. 속성(Attribute) 4.Primary Key 4.1. Partition Key 4.2. Sort Key (Range Key) 5. Secondary Index 6. WCU, RCU 6.1.RCU (Read Capacity Unit) 6.2.WCU (Write Capacity Unit) 6.3. 참고 - 일관성 7. 참고문헌 1. 테이블 데이터 레코드의 집합 2. 항목(Item) 테이블에 있는 하나의 레코드 자체를 의미 3. 속성(Attribute) 기본적인 데이터 요소로 더 이상 나뉠 수 없는 것, 항목의 조각 속성에 대한 내포 속성은 32 깊이 까지 허용 대부분의 속성은 스칼라(하나의 값만 가질 수 있음)다. 4. primary..

IT/NOSQL 2019.11.19

[Spring] Servlet과 web.xml의 관계

기본적인 프로젝트를 생성하면 다음과 같은 web.xml이 생성되어 있을 것이다. 기본적으로 "/"경로를 호출할 때, 쓰일 수 있는 페이지의 형식을 로 정의해 놓았다. servlettest index.html index.htm index.jsp default.html default.htm default.jsp 앱을 외부로 디플로이 하기 위해 자신의 프로젝트를 톰캣에 추가 하였을 것이다. web.xml에 매핑을 하지 않았을 경우, Servlet을 호출 할 때 http://// 과 같이 매우 긴 주소로 호출 할 것이다. 하지만 이러한 형식은 클래스 이름이 그대로 노출되기 때문에 보안상 좋지 않습니다. 따라서 이런 방식으로 사용하지 않고, 서블릿 클래스에 대해 대응하는 매핑된 이름으로 실제 서블릿을 요청한다. ..

IT/Java Spring 2019.11.18

[AWS-CLI] aws: command not found 해결법

일반적인 리눅스 터미널에서 awscli를 설치하였을 때, 보통은 제대로 작동하지만, git bash는 윈도우 상에서 리눅스 시스템을 사용하도록 에뮬레이터로 “흉내” 낸 것이기 때문에 경로가 잘 매칭 되지 않는 문제가 빈번히 일어난다. 그 결과로 다음과 같이 제대로 명령어가 작동하지 않는 경우가 종종 일어난다. 리눅스 환경에서도 경로 해석이 잘못 될 경우, 일어나는 에러이다. 위 문제를 해결하기 위하여 가장 먼저 awscli가 어떤 언어 기반으로 실행되는지 찾아보았다. 공식 aws github를 찾아본 결과, python을 사용하는 것을 알 수 있었다. Python기반으로 실행되는 스크립트 임을 알게 되었으니, 이제 실행파일이 어디 있는지 확인해보았다. 일반적으로 pip uninstall 명령어를 사용하면..

IT/Cloud 2019.11.14

[AWS] AWS 공식 홈페이지의 Default Limit과 Service Quota의 Default Limit가 다른 이유

1. 의문점 자주 사용하는 AWS Resource에 대해 조사하는 도중 홈페이지에 기술된 EC2 Default Limit과 AWS Service Quota의 내용이 상이하였습니다. 이에 대한 자료가 없어 상이한 내용에 대한 캡처본과 함께 AWS Support Center에 Case Open을 하였습니다. 상이한 내용은 다음과 같습니다. AWS 공식 홈페이지의 EC2 Default Limit AWS Service Quota에서의 EC2 Default Limit (개인 실습 계정 현황) 2. case 답변 본문 답변의 본문은 다음과 같습니다. Hello, I would like to thank you for your patience while we waited for the EC2 Service Team t..

IT/Cloud 2019.11.13

[AWS] EKS로 클러스터 구성하기

목차 1. 사전 준비 2. EKS로 클러스터 구성하기 3. Kubectl을 이용해 노드 구성하기 3-1. 노드 마이그레이션 4. helm 설치 5. Auto Scaling Application and Cluster 5-1. HPA 5-2. CA 6. Prometheus 7. Grafana 1. 사전 준비 AWS 가입 후, EKS Hands on Lab을 따라할 IAM계정을 생성하겠습니다. 이 testeks라는 이름을 가진 IAM계정에는 administrator access권한을 주었습니다. (아직 학습이 부족하여 구체적으로 eks를 사용하는데 얼마나 많은 요소가 들어가는지 파악중입니다. 파악되면, 해당 요소만 컨트롤 하는 권한만 정리하여 수록하겠습니다.) 생성한 IAM계정을 통하여 c9를 workspac..

IT/Cloud 2019.11.10

[AWS & Kubernetes] Kubernetes와 EKS

1. Introduction 1.1 What is Kubernetes 쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼이다. 1주일에 수십억 개의 컨테이너를 생성하는 구글이 내부 배포시스템으로 사용하던 borg를 기반으로 오픈소스 프로젝트를 통해 빠르게 발전하고 있다. 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 플랫폼을 지향하고 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할을 합니다. 서버리스, CI/CD, 머신러닝 등 다양한 기능을 쿠버네티스 상에서 이용할 수 있다. Kubernetes가 제공하는 구체적인 항목은 다음과 같다. 1. Service Discovery and Load Balancing Kubernetes는 DNS나 자체 i..

IT/Cloud 2019.11.10