DB가 필요해... 이직을 하기 전에는, 사내 DB를 개인용 프로젝트에 써먹었었다. 이직이 결정된 이후에 인프라를 만지작 거리려니까 DB가 문제가 됐다. 어떻게 써야할까 고민하다가 그냥 인프라 구축을 위해 띄워놓은 EC2에 MySQL 서버를 띄우기로 했다. 아쉬운 점은, 난 그동안 오라클만 써왔다는 것이다. 하지만 오라클은 유료라 과감히 버린다. (Oracle 이미지는 Docker Hub에서도 내려버렸다...) AWS EC2 / Docker 설정 및 설치 멈춰버린 인프라 관련 글에 잘 써놨다. MySQL Docker 설치 Docker Hub에 저장된 공식 이미지를 사용하면, 별도의 설치파일 없이 편하게 사용할 수 있다. docker pull mysql:latest 설치 후 아래와 같이 뜨면 정상적으로 설..
이직 전 마지막 작업.. 이 작업이 이직 전 마지막 작업이다. 슬프게도 성공적으로 마무리된 것을 보고 나오진 못했다. Harbor 앞에 별도의 reverse proxy를 두고 내부적으로 redirect해서 사용하는 방식으로 인프라를 구축하는 건데 문제가 생겼기 때문이다. Harbor의 reverse proxy Harbor는 reverse proxy가 nginx를 사용한다. nginx 쪽에서 외부 연결을 받아주고 내부의 component들에게 전달한다. 문제는 사내 서버는 Apache Httpd를 별도의 reverse proxy를 사용하고 있다는 점이다. 그래서 아래와 같은 구조로 동작하도록 구성해야했다. Apache Httpd에서 Redirect 설정을 하고 nginx에서 다시 뿌리도록 구성해야했다. 이..
Private Registry 매번 Docker 이미지를 만들기 위해서 Dockerfile을 빌드하는 건 너무 오래걸린다. 때문에, 만들어 놓은 Docker 이미지를 docker registry에 저장(push)해놓고 다운로드(pull)해서 사용할 일이 생긴다. 그런데 내가 담당하고 있는 프로젝트가 외부로 노출되지 않게(private하게) 사용해야 할 경우 어떻게 해야할까? 기본적으로 사용되는 Docker Registry인 Docker Hub는, 아쉽게도 public Registry만 Free tier로 제공한다. 또한, Docker Hub에서 제공하고 있는 저장소는 로컬에 저장하는게 아니라 외부 저장소기 때문에 무작정 사용하기에는 너무 불안하다. 이러한 문제를 해결하기 위해 Private Contain..
앞서 언급한 적이 있지만, 내가 담당하고 있는 서비스는 CI/CD가 없다. 하지만, 관리해야할 서버군은 요청을 앞단에서 받아줄 Apache Httpd 서버 6개, WAS가 있는 API 서버 6개, 실시간 위치정보를 다루는 WAS 3개, 배치서버 4개다. 한번 배포하는데만 시간 단위로 걸리고, 배포용 WAR파일을 수동으로 올리는데만도 몇 분씩 걸린다... 자사 서비스가 아니다보니 요청하기 어려 운점은 이해하겠지만 솔직히 말이 안된다고 생각한다. 심지어 TC도 따로 없고 데일리 빌드도 하지않으며, 프로젝트에 참여한 개발자가 개별 commit을 하고, pull request로 관리하지 않는다. 불만만 토로하게 되었는데 이러한 사항들 때문에, 다른 서비스는 어떻게 배포 과정을 갖는지 공부하게되는 계기가 됐고, ..
회사에서 어드민 서버를 신규 인프라로 이전하게 됐다. 베이스에서부터 작업하다보니 이전하면서 서버의 구조에 대해 볼 일이 생겼다. 우리 회사에서 사용하는 어드민의 서버 구조는 웹서버와 WAS를 연동시킨 구조였다. 대충 위와 같은 구조이고, 앞라인에 L4 로드밸런서를 둬서 로드밸런싱을 하고 있다. L4 부분까진 정확히 알 수 없으니, Httpd 웹서버와 Tomcat을 연동하면서 기억하고 싶었던 내용을 정리하려고한다. 그리고 위 내용을 정리하기 전에 웹서버와 WAS의 내용을 정리하지 않고 지나갈 수가 없었다.. 1. 웹서버(Web Server) 웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램 - 위키백과 위키백과의 정의와 같이 웹서버는..
앞선 포스팅에서 Docker와 VM 구동 방식의 차이를 알아보았다. 여기서 Docker가 "왜 등장하게 됐는지"에 대한 설명은 마무리하고, "어떻게 사용할 것인가"에 대해 초점을 맞추어 정리해보려고 한다. 우선, Docker 웹 사이트에선 Docker를 아래와 같이 설명했다. Docker는 애플리케이션을 개발, 배송 및 실행하기 위한 개방형 플랫폼입니다. Docker를 사용하면 애플리케이션을 인프라에서 분리할 수 있으므로 소프트웨어를 빠르게 제공할 수 있습니다. Docker를 사용하면 애플리케이션을 관리하는 것과 동일한 방식으로 인프라를 관리할 수 있습니다. 코드를 신속하게 배송, 테스트 및 배포하기 위한 Docker 방법론을 활용하면 코드 작성과 프로덕션 환경에서 실행하는 사이의 지연을 크게 줄일 수 ..
학부생 시절에는 Windows 환경에서 Linux를 사용하기 위해서 VM ware, Virtual Box와 같은 가상화 소프트웨어들을 사용해서 가상 머신(Virtual Machine)을 구동시켜 사용했었다. 가상 머신의 단점은... 너무 느렸다. 설치부터 부팅까지의 소요 시간이 꽤나 컸다. 무슨 이유에서인지 구동이안돼 재설치라도 하는 날에는 정말 끔찍했었다. 때문에 근래엔 리눅스 환경에서 개발할 일이 있으면, Docker를 주로 사용하고 있다. Docker Hub와 같은 Docker Registry에 저장해 놓으면, 어디서든 같은 환경의 리눅스를 손쉽게 사용할 수 있다. 같은 가상화 환경을 제공하는데 VM과 Docker가 왜이리 차이가 나는지 알고 싶어 정리해봤다. 가상화는 데스크탑 가상화, OS 가상화..
1. 캐시란? 서버는 많은 리소스들을 저장하고 있다. 개중에는 엄청나게 큰 파일을 요청하는 경우가 있는데, 이럴 경우 여러번 같은 파일을 요청할 경우 서버는 많은 사용자가 사용 중이 아니어도 과부하 상태 빠질 것이다. 위와 같은 경우를 대비해서 서버-클라이언트 서비스 간에 캐시(Cahce)를 둬서 리소스에 대한 좀더 빠른 접근할 수 있도록 한다. 캐시의 위치는 구현법과 솔루션에 따라 나뉘는데, 1. 인 메모리 캐싱(In-memory caching): 서버의 RAM에 데이터를 저장해 캐싱된 데이터에 빠르게 접근할 수 있도록 한다. Java 라이브러리 ehcache가 대표적인 예이고, 스프링 내부적으로도 제공하는 @Cacheable도 인메모리 캐싱이다. 2. 디스크 캐싱(Disk caching): 데이터를 ..
- Total
- Today
- Yesterday
- OpenAI
- MySQL
- lambda
- 코딩테스트
- Kotlin
- springboot
- AOP
- Spring
- JWT
- serverless
- Elastic cloud
- 람다
- GIT
- cache
- S3
- java
- chat GPT
- Log
- terraform
- docker
- CloudFront
- EKS
- elasticsearch
- openAI API
- AWS
- awskrug
- AWS EC2
- ChatGPT
- jenkins
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |