![[AWS] 서버리스 기반 URL 주소 단축 서비스 구현 - (3) 도메인 연결, S3 정적 웹 호스팅](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDqdlK%2FbtsJKElks35%2F49cRXzCKL4P3slRctTUpC1%2Fimg.png)
앞서 키 생성과 포워딩 람다를 각각 기능 구현하고, API Gateway 연결하여 호출하는 내용을 다루었다.이번 포스팅에서는 도메인 주소를 AWS Route53 연결하여 원본 주소보다 길어지는 문제를 해결하고, 사용자 입력을 받을 정적 웹 호스팅(s3)을 다뤄본다 참고. https://dev-ljw1126.tistory.com/463 [AWS] 주소 축약 서비스(shorten url) 구현 - (1) 키 생성 람다이번 포스팅에서는 AWS 인프라를 활용해서 주소 축약 서비스를 만들어보려 한다.참고로 주소 축약 서비스는 긴 URL을 짧고 간단한 형태로 변환해주는 도구이다. 장점은 아래와 같다① URL 가독성dev-ljw1126.tistory.com https://dev-ljw1126.tistory.com/4..
![[AWS]서버리스 기반 URL 주소 단축 서비스 구현 - (2) 포워딩 람다 구현](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ooFg%2FbtsJKOneBIa%2Frj7vRAzjG3S1mZwIoCNulk%2Fimg.png)
앞서 긴 주소를 입력했을 때 키 생성(축약 주소)하여 반환하는 기능을 구현해보았다. 이번 포스팅에서는 축약 주소를 요청했을 때 원본 주소로 포워딩하는 기능을 구현해본다. 참고. https://dev-ljw1126.tistory.com/463 [AWS] 주소 축약 서비스(shorten url) 구현 - (1) 키 생성 람다이번 포스팅에서는 AWS 인프라를 활용해서 주소 축약 서비스를 만들어보려 한다.참고로 주소 축약 서비스는 긴 URL을 짧고 간단한 형태로 변환해주는 도구이다. 장점은 아래와 같다① URL 가독성dev-ljw1126.tistory.com 포워딩 Lambda Function 마찬가지로 Lambda Function을 신규 생성하고, VSCode에 연동하도록 한다. 스크립트 절차는 아주 심플하..
![[AWS] 서버리스 기반 URL 주소 단축 서비스 구현 - (1) 키 생성 람다 구현](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKEKVa%2FbtsJKScJbEB%2FDeORJxjPQRPgsjGouHoFKk%2Fimg.png)
이번 포스팅에서는 AWS 인프라를 활용해서 URL 주소 단축 서비스를 만들어보려 한다. 긴 URL 주소를 단축했을 때의 장점은 아래와 같다① URL 가독성 개선, 공유 가능② 사용자 경험 개선 및 클릭률(CTR) 향상 ③ 브랜딩과 신뢰도 향상④ 링크 분석 및 트래킹 가능⑤ 관리 및 업데이트 용이성⑥ 제한된 공간에서의 효율성⑦ URL 관리 용이성 대표적으로 https://bitly.com/와 같은 서비스를 예로 들수 있다. "백문불여일견" 아래를 보면 한 눈에 이해 될 것이다. AWS 공식 블로그에서는 CloudFront를 앞단에 위치하고 있는데, 이번 포스팅에서는 3단계로 나눠직접 도메인을 발급하고 Route53 - API Gateway - Lambda - S3 연결하는 과정을 다뤄본다. Infra ..
![[AWS] VPC, Subnet, EC2 개발 인프라 구성 (선착순 쿠폰 발급 시스템)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2lTkE%2FbtsJGaYTkLc%2FuGR2f7DCenJQ6IebTACVzk%2Fimg.png)
토이 프로젝트로 [선착순 쿠폰 발급 시스템]을 만들어보고 AWS 배포를 해보았다. 도메인 발급은 하지 않고, 단순하게 개발 용도로 VPC, Subnet 구성하고 연결했던 내용을 기록으로 남긴다. VPC- Virtual Private Cloud, 가상 네트워크로 격리된 네트워크 환경에서 운영할 수 있도록 해준다- *RFC 1918 국제 규격에 따라 IP 설정 (위키백과) AWS 웹 콘솔에서 커스텀 VPC 생성 (10.0.0.0/16) 한다. 커스텀 VPC 생성시 라우팅 테이블, 기본 NACL(네트워크 ACL), 기본 보안 그룹(default) 만들어진다. 알기로는 네트워크 ACL은 stateless라서 인바운드, 아웃바운드를 둘 다 설정해야 하는 것으로 알고 있다. 반면 보안 그룹은 stateful로 인바..
![[NHN Cloud] 컨테이너 기반 Prometheus, Grafana 모니터링 환경 구성(by 오픈 소스 툴)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeeGytI%2FbtsJqphjQEp%2FkjJg6irMb7gcICpsmU0Zm0%2Fimg.jpg)
“전투에서 실패한 지휘관은 용서할 수 있지만 경계에서 실패하는 지휘관은 용서할 수 없다”는 말이 있습니다. 이 말을 서비스를 운영하는 개발자에게 비춰 보면 장애는 언제든지 발생할 수 있더라도 그만큼 모니터링을 잘 해야 한다는 뜻입니다. - 김영한 CTO 앞에 포스팅에서 기본적인 인프라 구성해보았다. 이번 포스팅에서는 웹서버에 Docker 컨테이너 기반 Prometheus와 Grafana를 설치하고 대시보드를 생성하는 과정을 다뤄본다. 참고. https://dev-ljw1126.tistory.com/458 [NHNCloud] 기본 웹 서버, DB 인프라 구축 (vpc, subnet, floating ip, ..)기본 인프라 구성도nhn cloud 사용하여 아래와 같은 기본 인프라 구성해본다 참고로- ..
![[NHN Cloud] 기본적인 웹 서버, DB 인프라 구축 (vpc, subnet, floating ip, ..)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZY0fM%2FbtsJlJ9aodK%2FU2WURBULLDysHMARUwyxx1%2Fimg.jpg)
기본 인프라 구성도nhn cloud 사용하여 아래와 같은 기본 인프라 구성해본다 참고로- ssh(22)로 web 서버 접근시 floating ip 주소로 서버 접속한다 (10.*.*.* : 사설 ip로는 외부에서 접근 x)- private subnet에 있는 MySQL 서버는 외부에서 접근 불가하고, public subnet 통해서 접속/접근 가능하다 1. VPC(Virtual Private Cloud) , Internet Gateway- 클라우드 컴퓨팅 환경에서 사용자가 정의한 가상 사설 네트워크- RFC 1918 기재되어 있는 범위로 사설 네트워크를 생성할 수 있다- 10.*.*.* / 172.*.*.* / 192.*.*.* 주소가 해당 [VPC 생성] 버튼 눌러서 10.0.0.0/16 으로 "..
![Jenkins 빌드 배포시 Slack 알림 설정 (5)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAm3Ca%2FbtsnOsTdwBS%2FuDpJJqJLPobGP9hxKlyRG0%2Fimg.png)
Jenkins v2.413 기준 설명 Slack 설정 Slack 가입 및 개인 채널 생성 (생략) - 무료 플랜 사용 - 배포 알림 채널로 #build-deploy 생성 Jenkins CI 앱 설치 앱에서 jenkins 검색하여 추가 아래 이미지에서는 생략되어 있지만 친절하게 Jenkins에 Slack Token 등록하는 방법 또한 가이드 설명해 준다 사용할 채널을 선택하고 Slack Token을 발급받고 가이드에 따라 Jenkins 설정에 해당 토큰을 등록 후 사용 Jenkins 설정 plugin 설치 - 플러그인 설치 권한 가진 계정으로 접속 - [Jenkins관리 > Plugins] 에서 slack notification 설치 Slack Token 등록 - [jenkins 관리 > System] 메..
![[Ubuntu] /bin/bash로 기본 shell 변경하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWlpeH%2FbtsnGZRCyC9%2F9403Y2bYPWjRmNbRy2ScD1%2Fimg.png)
chsh 명렁어 실행 $ su root $ chsh -s /bin/bash /etc/passwd 수정 $ vim /etc/passwd /bin/sh 를 /bin/bash 로 수정 후 저장하면 된다
![[Docker] Jenkins Build, Deploy, Execute Shell / 자동배포 환경 테스트 (4)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5MvBo%2FbtsnK90EdoI%2FbTg4zxmgO5sveJBJkDIBck%2Fimg.png)
전체 flow 해당 포스팅에서는 *.war 빌드 배포 후 hello world 화면 확인하는 과정만을 기록 Jenkins Execute Shell 작성 1. Execute Shell #!/bin/bash ./gradlew clean bootWar 2. Execute Shell #!/bin/bash BUILD_FILE=$(find . -name *.war) FILE_NAME=`basename $BUILD_FILE` HOST=ubuntu1 USER=ubuntu LOC=/home/ubuntu/project/wars SYMBOLIC_LINK=/home/ubuntu/project/dev.war RUN_CMD=/home/ubuntu/project/deploy.sh echo "> copy ${BUILD_FILE} t..
![[Docker] Container SSH key 접속, scp 명령어로 파일 전송 (3)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEsYPJ%2FbtsnLbcPUa3%2FvPlnzYLJFgunLJ4vMlokKK%2Fimg.png)
* 절차 : Docker Network 신규 생성 > hostname 지정 > ssh key 통신 접속 수행 Docker Network 생성 $ docker network create --gateway 172.19.0.1 --subnet 172.19.0.0/16 home # 확인 $ docker network ls $ docker inspect home - home bridge 신규 생성 - docker의 경우 신규 컨테이너 생성시 default 네트워크에 B클래스 대역 IP로 할당하는 것으로 보임 Docker Container 실행 및 SSH Key 접속 - 사전에 만들어 놓은 ubuntu와 jenkins container 를 활용하여 - docker run의 경우 container를 다시 만들고, 실..
![[Docker] Container IP 확인 및 SSH 접속하기 (2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB4ZEU%2FbtsnFenYE9S%2FLJH21AqNHNvMTZvEOwwiyk%2Fimg.png)
Docker Container 별 IP Address 확인 1. host (local) 에서 docker command로 확인하기 방법1. docker inspect json 형태로 구성된 (low-level) docker container 정보에서 확인 $ docker inspect -f "{{.NetworkSettings.IPAddress}}" $ docker inspect | grep IPAddress 방법2. docker exec 실행 중인 docker container 에 command 실행 시킴 이때 ip 명령어의 경우 서버에 패키지 설치 되어 있지 않을 경우 동작하지 않음 (iproute2 패키지 설치) $ docker exec ifconfig eth0 $ docker exec ip addr..
![[Docker] Jenkins 설치 및 Github 연동 (1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAqjKd%2FbtsmUu5AwFI%2FRx6bh748sthUhcWcV3IOW1%2Fimg.png)
Jenkins 설치 (By Docker) - 처음 lts와 2.176.2 설치했었는데, 버전 문제인지 플러그인 설치 실패 계속 되었음 - docker hub에서 2.413-jdk11버전으로 받으니 플러그인 정상 설치 확인 # docker image 검색 $ docker search jenkins # image 다운로드 $ docker pull jenkins/jenkins:2.413-jdk11 # image 확인 $ docker images # 설치 $ docker run --name jenkins -d -p 8080:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home -u root jenkins/jenkins:2.413-jdk11 # container 터미널..
![[Docker] MySQL 5.7 설치 및 데이터 import](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj4CsW%2FbtssHyoHC02%2FAuDJQKzCQKWj1fimNjjMGK%2Fimg.png)
docker 설치 # 공식 사이트와 동일하다. $ sudo apt-get remove docker docker-engine docker.io containerd runc $ sudo apt-get update $ sudo apt-get install ca-certificates curl gnupg $ sudo mkdir -m 0755 -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings..
![[oh-my-zsh] help command not found](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIXjz3%2FbtrVAs2kNKk%2FfJwh9sp1x9N3gwrBtV5xbK%2Fimg.png)
개요 - bash script 공부 중에 help command 확인하는데 에러 출력 - 찾아본 결과 help command가 모든 shell에 적용되는 것은 아닌 것으로 확인됨 해결 방법 $ vim ~/.zshrc # 하단이나 원하는 곳에 함수 삽입 후 저장 function help() { bash -c "help $@" } $ source ~/.zshrc 참고 https://gist.github.com/emreberge/1424710
개요 평소와 같이 git repository 들어가서 git status 했는데 전체 파일이 modified 상태로 확인됨 검색 키워드 👉 index refresh problem when change git terminal 작업 환경 : wsl , ubuntu, oh-my-zsh 해결 LF 인식으로 인한 문제였고, git config 수정함 ## For the current repository git config core.filemode false git config core.autocrlf true ## For global config (필자는 global 설정함 👨💻) git config --global core.autocrlf true git config --global core.filemode ..
개요 AWS EC2서버에서 스프링 부트 프로젝트 실행시 아래 에러 발생 확인 javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate 해결 datasource url에 option 추가 후 다시 build해서 실행하니 정상동작 spring.datasource.url=jdbc:mysql://디비주소:3306/디비명?characterEncoding=UTF-8&useSSL=true&enabledTLSProtocols=TLSv1.2
![[Docker] docker 로 mariadb 설치 후 연결하기 - (2)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FStkND%2FbtraIm6RSGh%2FNw01EMLXu0c7uWb6Q7S9kk%2Fimg.png)
1. *.sql 파일 container에 업로드/다운로드 cp 명령어 사용하여 target container에 파일 업로드 $ docker cp ./test.sql mariadb_test:/test.sql container에 접속하여 업로드 파일을 확인 $ docker exec -it mariadb /bin/bash $ cd / $ ll -h 참고. docker cp 명령어 ① host 에서 docker container로 파일 업로드 // 형식 $ docker cp {로컬 파일 위치} {도커명:업로드 위치} // 예시 $ docker cp /home/centos/test.txt mariadb:/home/test.txt ② docker container에서 host로 파일 다운로드 - host 에서 do..
![[Docker] docker 로 mariadb 설치 후 연결하기 - (1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVyozR%2FbtraCSFVvRB%2FwFA14nd76FNIrjA2FMTYs0%2Fimg.png)
1. docker 실행 후 로그인 2. mariaDB image 내려받기 $ docker search mariadb // mariadb 이미지 검색 $ docker pull mariadb // mariadb 이미지 내려받기 $ docker images // 내려받은 이미지 목록 확인 3. mariaDB container 실행 // 프로세스 확인 $ docker ps -a 또는 docker ps // container 실행 $ docker run --name mariadb_test -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb mariadb $ docker run --name mariadb_test -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=..