Parameter Store VS Secret Manager AWS 서비스인 Secret Manager와 Parameter Store는 Key-Value 정보를 저장한다는 측면에서 비슷한 서비스지만, 쓰임새 또는 사용 목적이 다릅니다. Parameter Store 간단한 환경변수를 AWS에 저장하여 그것의 사용을 편리하게 하는 것에 목적...
Tomcat Trouble Shooting 2
Tomcat Trouble Shooting 2 문제 tomcat은 잘 기동했으나 api를 test했을 때 404 에러가 발생합니다. 원인 server.xml에서 path 설정이 제대로 되지 않았습니다. 헤맸던 원인 tomcat은 잘 기동되었기 때문에, tomcat의 문제가 아닌 줄 알았습니다...
Tomcat Trouble Shooting 1
Tomcat Trouble Shooting 1 이번에 처음 tomcat을 사용해보면서, spring boot backend를 외장 tomcat으로 기동시킬 때 발생한 문제와 원인 및 그 해결책을 정리합니다. 문제 내장 tomcat으로 app 기동 시 실행이 잘 되었으나, 외장 tomcat으로 app을 실행할 경우, to...
Terraform에서 EBS encrypt
Terraform에서 EBS encrypt terraform으로 aws infra code 작성 시, ebs volume을 encrypt할 때 aws managed key를 사용하고 싶을 경우, 아래와 같이 활용할 수 있습니다. data "aws_ebs_default_kms_key" "current" {} resource "aws_ebs_v...
Jenkins -> Windows
Jenkins -> Windows Jenkins에서 Windows 서버로 pipeline을 구성할 때 원격으로 명령을 내리기 위해서는 WinRM client, Publish Over SSH 등의 Plugin을 사용할 수 있습니다. winrm을 사용할 경우 서버에서 winrm을 활성화시켜야 하고, ssh를 사용할 경...
Root Volume의 크기를 줄이는 방법
Root Volume의 크기를 줄이는 방법 Root Volume은 일반적인 방법으로 크기를 줄일 수 없습니다. AWS EBS volume은 생성된 상태에서 크기를 늘릴 수만 있고 줄일 수는 없습니다. 마찬가지로 snapshot으로 root volume을 backup하고 복구하는 경우에도 기존 volume의 크기보다 크거나 같은 volume으로만 복구가...
Carousel with React
Carousel with React React(Preact)로 Carousel component를 만들어봅니다. carousel을 표현하기 위한 trick은 여러 화면을 순서대로 횡으로 나열해놓고 하나의 화면씩만 노출될 수 있도록 나머지 화면은 overflow:hidden을 사용하여 숨깁니다. 또한 화면을 중앙배치하도록 position:relativ...
Route Table Propagation이란
Route Table Propagation이란 traffic의 이동 경로를 route table로 설정할 때 propagation이 aws 공식 문서를 봐도 잘 와닿지 않아 간략하게 정리합니다. virtual gateway나 transit gateway가 vpc에 붙고 direct connect가 연결되는 경우, route table 경로를 prop...
CSS Trouble shooting
CSS Trouble shooting side project를 진행하면서 마주한 문제들을 어떻게 해결했는지 정리합니다. page가 overflowY: ‘auto’를 했음에도 scroll이 활성화되지 않는 이유는 height를 설정하지 않았기 때문입니다. div의 가로, 세로 비율은 width와 padding-top 속...
Preact란
Preact란 React를 경량화시키고 속도를 최적화시킨 library입니다. react와 사용법이 거의 비슷합니다. 그래서 react-icons 등의 기존 react library 등도 사용할 수 있습니다. Page가 아예 그려지지 않는다면, css에 문제가 있을 수 있습니다. css 파일을 따로 두지 않고, page 안에 styles 변수를...
Terraform state 관리
Terraform state 관리 terraform.tfstate와 실제 cloud infra 사이의 sync가 맞지 않을 경우, terraform import 또는 terraform state rm을 통해 cloud의 자원을 terraform.tfstate에 저장하거나 cloud에는 이미 삭제된 자원을 tfstate에서도 삭제시켜줄 수 있습니다. ...
tekton
tekton kubernetes-native하고 service를 잘게 나누면서(microservice) 이를 container 환경에서 돌리는 cloud-native한 CI/CD tool입니다. Kubernetes의 권장사항에 맞게 Custom Resource Definition(CRD)로 작성되어 있어 재사용성이 높고 customizing이...
terraform으로 EKS 생성 시 Trouble shooting
terraform으로 EKS 생성 시 Trouble shooting terraform aws module을 사용한다면, 비교적 편리하게 eks를 생성할 수 있지만, 직접 terraform language로 eks resource들을 일일이 생성하려고 시도한다면, 수많은 에러를 마주할 수 있습니다. NodeCreationFailure: insta...
terraform으로 eks 작성 시 주의사항
terraform으로 eks 작성 시 주의사항 terraform으로 eks를 작성하는데, getting credentials ~ 혹은 no kind "ExecCredential" is registered ~라는 에러가 발생한다면 사용환경의 aws cli version이 낮아서 생기는 문제일 가능성이 있습니다. aws cli의 version이 낮고...
EFK 설치 시 주의사항
EFK 설치 시 주의사항 EKS 안에 최신 EFK를 설치하려고 하는데, 쓸만한 example 혹은 guide를 찾기가 힘듭니다. 그래서 간단하게 주의할 점을 적어둡니다. 먼저 architecture를 알아둘 필요가 있습니다. architecture에 나온 것처럼 elasticsearch는 log들을 모아둘 저장소 pvc가 ...
kubernetes에서 AWS 접근 (OIDC, IRSA)
EKS cluster의 내부에 구성되어 있는 kubernetes 자원들은 AWS의 자원들을 CRUD할 수 없고, AWS의 계정 또한 kubernetes 자원들을 보거나 조작할 수 없습니다. 즉, kubernetes 자원과 AWS 자원은 서로 다른 영역에 있습니다. 그렇기 때문에 서로에게 접근하기 위해서는 특별한 추가 작업이 필요합니다. AWS...
Authentication vs Authorization
Authentication vs Authorization Authentication(인증): Login Authorization(인가): Authority(권한) Authentication Authorization 사용자가 요청자인지 확인 사용자의 ...
RBAC, IAM
RBAC(Role Based Access Control) 역할을 기반으로 한, 자원 접근에 대한 통제를 의미합니다. 아래와 같이 RBAC를 사용할 경우, team 구성원이 바뀌어 user를 변경할 때 각 자원에 접근하는 권한은 그대로 두고 user만 각각에 맞는 권한으로 바꿔주기만 하면 되어서 유지보수가 편합니다. IAM 아래와 같...
Hoisting이란
Hoisting Javascript는 hoisting이라는 개념이 있습니다. interpreter가 변수와 함수의 선언 전에, 메모리 공간을 미리 할당해놓는 것을 말합니다. catName("철수"); function catName(name) { console.log("제 고양이의 이름은 " + name + "입니다"); } 다른 언어는 함수...
DNS
DNS(Domain Name System) web site의 ip와 domain 주소를 이어주는 system입니다. Name Server(Domain Name Server) User가 사람이 읽을 수 있는 문자열(ex: www.amazon.com)의 주소를 query하면 DNS server가 기계가 읽을 수 있는 IP(ex: 192.0....
Routing 정리
Routing 정리 routing routing table을 통해 packet을 목적지로 전달하기 위한 경로를 선택하는 과정입니다. routing protocol routing table을 만들기 위한 규약입니다. AS의 외부, 내부를 기준으로 EGP와 IGP로 나뉩니다. EGP(Exterior Gateway P...
Django 체험하기
Django 체험하기 django의 역할 backend에서 쓰이는 framework web server - was - db의 3-tier architecture를 구성해보자. 정적인 contents(사용자의 요청과 관계없이 동일한 내용을 출력)를 담당할 web server를 만들기 위해 react framework를 활용한다. 동적인 conte...
dockerfile 만들어보기
Dockerfile docker image를 생성하는 file FROM node:12-alpine RUN apk add --no-cache python3 g++ make WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "src/index.js"] FROM: docker.io hub에...
Monitoring 도구
metric 수집 방식 push: monitoring 자원에서 서버로 지표들을 전송한다. 서버로 지표를 전송하기 위해 각 monitoring 자원에 agent 설치가 필요하다. 각 monitoring 자원들이 서버로 지표를 전송하기 때문에 보안성 측면에서 안전하다. ex) Nagios, Zabbix pull: 서버에서 monitoring 자원...
linux package
Linux Package Linux에서 software를 실행하는 데 필요한 file들의 묶음 Windows에서 zip, msi와 같다. source package vs binary package source packge 방식은 source code가 들어있는 package, compile해서 binary file을 만들어야 실행할 수 있다. 설치 ...
docker -> containerd
기존 Docker의 문제점 docker는 monolithic system으로, image build, 관리, 공유 실행 등 너무 많은 기능이 탑재되어 있어, 무거울 뿐만 아니라 장애 발생 시, 모든 기능에 장애가 생기는 single point of failure가 될 위험이 있다. CRI(Container Runtime Interface) ku...
컴퓨터 개론 2
변수 값이 저장될 Memory 주소의 이름이다. 변수를 호출하면서 변수에 저장된 값을 가져올 수 있다. C는 & 연산자로 실제 memory의 주소를 가져올 수 있으며, * 연산자로 memory 주소에 저장된 실제값을 가져올 수 있다. 자료구조 array, linked list, stack(LIFO), queue(FIFO), ...
컴퓨터 개론 1
대학교 1학년 때 공부했던 교재를 복습하며 내용을 정리하자. 컴퓨터 구성 중앙처리장치 CPU CU(Control Unit), ALU(Arithmetic Logic Unit), Register 주기억장치 Memory RAM, ROM ...