분류 전체보기
AWS - EC2 Volume 확장하기
AWS - EC2 Volume 확장하기
2022.04.27EC2 ubuntu 를 사용하던 도중 기본 Volume 을8GB 로 사용하다가 Docker 와 Redis 가 8GB 가득 잡아먹고 있어 docker-compose up 명령어가 먹질 않는 오류를 만났습니다. 이를 해결 하기 위해 EC2 Volume 을 늘려줬습니다. AWS EBS 로 들어와 Volume 을 확장하려는 인스턴스를 우클릭하고 볼륨 수정을 클릭합니다. AWS 에서 Volume 만 수정한다고 직접적으로 EC2 의 root Volumes 이 늘어나지는 않습니다. ec2 로 접속하여 root volume 크기를 확인합니다. df -h 그리고나서 확장된 Volume 을 확인합니다. lsblk 저는 이미 볼륨이 확장되어 있어 1000G 에 1000G 로 뜨지만 확장이 안되어 있는 분들은 두개의 사이즈가..
Go - Response body 를 Close 해야하는 이유
Go - Response body 를 Close 해야하는 이유
2022.04.26Go HTTP 클라이언트는 응답 상태와 헤더를 Network socket 으로 부터 읽고, 읽은 데이터는 응답 객체에서 바로 사용할 수 있습니다. 하지만 클라이언트가 자동으로 Response body를 읽지는 않습니다. Response body는 명시적으로 코드상에서 읽기 전까지는 소비되지 않은 상태로 남아 있으며, Response body를 닫게되면 읽지 않은 바이트를 그대로 소비합니다. Go HTTP 클라이언트가 socket을 닫을 때 암묵적으로 Response Body를 소비하는 것이 잠재적으로 문제가 될 수 있습니다. 예를 들어, GET method 로 파일을 요청하고 서버로부터 응답을 받았습니다. 응답의 Content-Length 헤더를 읽었는데, 파일이 기대한 것보다 훨씬 크다는 것을 알았습니..
Easy - 9 . is palidrome (with golang)
Easy - 9 . is palidrome (with golang)
2022.04.21Given an integer x, return true if x is palindrome integer. An integer is a palindrome when it reads the same backward as forward. For example, 121 is a palindrome while 123 is not. Example 1: Input: x = 121 Output: true Explanation: 121 reads as 121 from left to right and from right to left. Example 2: Input: x = -121 Output: false Explanation: From left to right, it reads -121. From right to l..
AWS- VPC, Routing table, Internet Gateway 설정하기
AWS- VPC, Routing table, Internet Gateway 설정하기
2022.03.19VPC 설정 ipv4 에서 192.168.0.0/24 로 255개의 IP 를 할당 할 수 서브넷을 만들어 줍니다 VPC 를 생성하게 되면 그림에서 보게되는 가장큰 네모인 VPC 라는 녀석을 만들게 되었습니다. 방금 만든 VPC 의 기본 라우팅 테이블을 살펴보게 되면 VPC 대역대에 있는 것에 대해서는 내가 통신을 해줄수 있어 라고 설정되어 있습니다. 서브넷 생성하기 방금 만든 VPC 를 선택해주세요 총 4개의 서브넷을 생성 할 예정이고 2개의 서브넷은 public 하게 만들고 2개의 subnet 은 private 하게 만들예정입니다. 서브네팅 테이블에서 26 은 64 개의 ip 를 할당한다는 뜻입니다. 그 다음 subnet 은 64 개 를 한당한 뒤부터 192.168.0.64/26 으로 할당합니다 가용영..
Failed to start bean 'documentationPluginsBootstrapper' 오류 해결
Failed to start bean 'documentationPluginsBootstrapper' 오류 해결
2022.03.02Spring boot 2.6버전 이후에 spring.mvc.pathmatch.matching-strategy 값이 ant_apth_matcher에서 path_pattern_parser로 변경되면서 몇몇 라이브러리(swagger포함)에 오류가 발생합니다. application.yml 에 아래 설정을 추가하면 해결 가능 합니다. spring: mvc: pathmatch: matching-strategy: ant_path_matcher
Aws - EC2 로 배포하고 Https 도메인 등록하기 (Route53, 로드밸런스, Certificate Manager)
Aws - EC2 로 배포하고 Https 도메인 등록하기 (Route53, 로드밸런스, Certificate Manager)
2022.02.24https://popawaw.tistory.com/268 EC2 에 HTTPS 로 도메인 연동하기 (Nginx) AWS Ec2 에 프로젝트를 배포하고 도메인을 연동한뒤 https 까지 추가하는 방법을 알아보겠습니다. 네트워크 지식이 부족한 탓에 굉장한 삽질을 했기에 글로 남겨두려고 합니다... 사전 준비물 AWS 계 popawaw.tistory.com 이전에 Nginx 로 작업한 Https 연동하기에는 몇가지 단점이 있습니다. 여러대의 인스턴스를 하나의 도메인을 기준으로 서브 도메인으로 연동 해주려면 SSL 인증서를 공유해야하는데 이작업이 쉽지 않았습니다 Scale out 을 고려해야하는 production 환경일때 좋지않은 방법이여서 다른방법을 찾아보던 와중 AWS 의 certificate manage..
EC2 에 HTTPS 로 도메인 연동하기 (Nginx)
EC2 에 HTTPS 로 도메인 연동하기 (Nginx)
2022.02.23AWS Ec2 에 프로젝트를 배포하고 도메인을 연동한뒤 https 까지 추가하는 방법을 알아보겠습니다. 네트워크 지식이 부족한 탓에 굉장한 삽질을 했기에 글로 남겨두려고 합니다... 사전 준비물 AWS 계정 도메인 (저는 Name cheap 에서 구매하였습니다) 터미널 vim?! 인스턴스 프로젝트를 배포 할 수 있는 인스턴스가 하나 필요합니다 저는 테스트용으로 사용하려고 제일싼 프리티어로 만들었습니다. 생성까지 시간이 조금 걸려서 기다려주세요 생성 하실때 발급받은 pem 키를 꼭 중요한곳에 보관해주세요 pem 키가 있는 곳으로 이동하신뒤 오른쪽 위에 연결(connect) 버튼을 눌러주세요 ssh -i 로 시작하는 걸 복사해주세요 chmod 400 나의pem파일.pem chmod 로 pem 파일의 권한을 ..
MySql 데이터를 AWS Rds 로 마이그레이션 하기
MySql 데이터를 AWS Rds 로 마이그레이션 하기
2022.02.18사건의 발단 입사한지 2주차에 프로토타입으로 구현된 서버에 연결된 Mysql 데이터 베이스를 API 서버와 분리 할일 이 생기게 되었다. Release 환경의 데이터 베이스를 API 서버와 같은 인스턴스 에 올려서 운영 한다는게 마음에 걸렸고 백업 에 대한 관리가 이루어 지고 있지 않아 AWS Rds 로 옮기기로 결정 했다. AWS Rds 의 가격이 만만치 않지만 프로덕션 환경이고 백업 까지 해줘서 그냥 쓰기로했다. https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/MySQL.Procedural.Importing.SmallExisting.html MySQL 또는 MariaDB DB에서 MySQL 또는 MariaDB DB 인스턴스로 데이터 가져오기..
programmer level 2 - 위장 (hash map)
programmer level 2 - 위장 (hash map)
2022.02.01https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr Hash map 과 순열 조합을 사용하여 문제를 해결 하였습니다. 예시 예를들어 headgear 가 3개고 eyewear 가 4 개라고 한다면 경우의 수는 headgear 가 총 4가지 eyewear 가 총 5가지 입니다. headgear (0, 1, 2, 3) eyewear (0, 1, 2, 3, 4) 그렇다면 4 * 5 = 20 이라는 값이 나옵니다. 요기서 스파이는 매일 하루에 한벌은 입어야 한다는 가정이 있으므로 모든날 아무것도 입지않는 경우의수 1개를 뺍니다. 20 - 1 = 19 이것을 코드로 구현 해보겠습니다. package io.pr..
JPA 성능 최적화 - N + 1 문제 해결 하기
JPA 성능 최적화 - N + 1 문제 해결 하기
2022.01.30JPA 성능 최적화 JPA 를 사용하면서 병목이 발생하는 구간 의 90% 는 조회에서 발생한다 그도 그럴것이 사실 insert 나 update delete 같은 method 들은 단건에 대해한 것들이 대부분이다. 하지만 select 로 여러 테이블을 join 하여 데이터를 가져올때 시간이 되게 오래 걸리는 경우 가 많다. jpa 에서는 조금 과장을 보태여 이 개념만 잘 알고 있어도 90%는 해결 할 수 있을 것처럼 보인다. 그게 무슨 문제인지 알아보자 회원 이 있고 그 회원은 책을 주문 할 수 있고 배송 정보가 담긴 테이블이 있다고 가정한다. Member.java @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name ..
Spring boot 에서 Fire base storage 연동 하여 사용하기
Spring boot 에서 Fire base storage 연동 하여 사용하기
2022.01.25Firebase 에 접속하여 Stroage 만들기 storage 를 생성 한뒤 private key 가 담긴 json 파일을 다운 받으러 갑니다. project settings 를 클릭 한뒤 generate new private key 를 누르셔서 잘 보관 해주세요 그런 다음 하나더 필요한 것은 방금 만든 storage 서버 의 bucket name 이 필요합니다. 버킷 네임은 파란색 업로드 파일 버튼 왼쪽에 보이는 링크 입니다. gs://dark-room-84532.appspot.com java 에 bucket name 을 입력 할땐 gs:// 을 뺀 그 뒤에 문자열을 입력 하면 됩니다. application.yml 에 다음과 같이 추가한뒤 아까 다운받은 json 파일을 application.yml 과..
Aop 를 활용하여 binding result 처리 공통화 하기
Aop 를 활용하여 binding result 처리 공통화 하기
2022.01.24AOP 란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을..