Why OCI?
이번에는 왜 AWS(항상 쓰는 것)이 아닌 OCI일까?
이는 두 인스턴스의 pricing을 찾아보면 알 수 있다.
https://hoing.io/archives/10446 <- 여기에서 모든 비용이 어떻게 계산되는지 알 수 있었다.
여기에 존재하는 평생 무료 플랜을 이용해서
앞으로의 학습이나, 추가적인 학습을 계속해서 하나의 서버로 할 수 있겠다는 생각이 들었다.
이번 프로젝트에서는
- 자바/스프링에 대한 딥다이빙
- 군집화 알고리즘을 이용한 내가 선택한 레시피와 같은 군집의 레시피 추천
을 주로 다룰 계획이다.
이에 대한 학습이 계속되어야 할 것 같다는 느낌이 들었다.
매번 학습을 할 때 새로운 프로젝트를 통해 기술을 도입해보기보단,
하나의 프로젝트를 더욱 제대로 만들어봐야겠다는 생각이 들었다.
(이게 개발자지!)
인스턴스는 완전 무료/기본 옵션을 전부 가져왔다.
(EC2와 동일 스펙을 가져오기보단, OCI 자체가 제공하는 옵션이 달라서 그대로 쓰기로 했다)
1. 부족한 메모리 해결해주기
이 부분은 이전에 정리했던 스왑 메모리를 이용해 메모리를 해결해주었다.
이 두 개의 포스트로 스왑 메모리에 대한 학습을 진행했었다.
메모리가 과도하게 사용되는 포인트에서 스왑을 단 (11:05)이후로 메모리 사용량이 줄어드는 것을 볼 수 있었다.
이번엔 2GB의 스왑 메모리를 사용했다.
2. 인스턴스 업데이트 시켜주기
위의 그래프에서 나온 메모리가 100%를 찍고 멈추던 상황은 sudo yum update를 하면서 멈춘 상황이었다.
성공적으로 sudo yum update & sudo yum upgrade를 할 수 있었다.
그런데 궁금해졌다.
이전에는 sudo apt update를 했던 것 같은데, 왜 이번에는 yum이라는 명령어를 사용할까?
업데이트를 기다리면서 이 부분을 찾아보았다.
다들 업데이트 시켜놓고 같이 읽어보자.
업데이트가 끝나면 이렇게 뜨고, upgrade를 추가로 진행시켜주었다.
update는 최신 버전의 설치를 주로 진행해준다고 하지만,
upgrade를 통해 모든 패키지들의 의존성을 체크해주는 것이다.
3. 도커 설치해주기
curl -fsSL https://get.docker.com/ | sudo sh
를 시도했는데 실패했다.
https://oracle-base.com/articles/linux/docker-install-docker-on-oracle-linux-ol8 에서 어떻게 하는 찾아보았다.
Oracle Linux 8이 CentOS기반이라 ubuntu기반과는 다르게 설치해야 하는 것 같았다. - `docker -v`를 하니 정상적으로 도커가 설치됨을 확인할 수 있었다.
dnf install -y dnf-utils zip unzip # dnf 유틸, 압축, 압축해제 패키지 설치
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo # 도커 공식 레포지토리 주소를 나의 레포지토리에 추가
dnf remove -y runc # Docker의 런타임에 사용되는 실행 담당 프로그램 삭제
dnf install -y docker-ce --nobest # Docker community edition을 설치한다. nobest는 최신 버전이 아니더라도 현재의 운영체제에 맞는 적합한 버전을 찾게 해준다.
이렇게 명령어들을 순차적으로 사용해 도커를 설치했다.
docker -v를 통해 도커 버전을 확인할 수 있었다.
4. 젠킨스 컨테이너 만들기
docker pull jenkins/jenkins:jdk17
jdk17버전의 젠킨스를 가져온다.
jdk17버전인 이유는 내가 이번 스프링을 자바 17로 진행하려고 해서 그렇다.
docker run -d -p 8180:8180 -v /var/jenkins_home --name jenkins -u root jenkins/jenkins:jdk17
이렇게 8180 포트에서 젠킨스를 실행시켰다.
8180포트로 접근을 하면 젠킨스는 adminPassword가 필요하다고 뜬다.
(이걸 하기 전에 인스턴스의 인바운드 규칙도 설정해주고 가면 된다)
이는 로그를 통해 보거나, 사진에 적혀있는 주소에서 볼 수 있다고 한다.
docker logs jenkins
나는 이런 명령어를 통해서 비밀번호를 가져왔다.
이렇게 들어가면 suggested plugin을 설치하는 것과, 추천받는 플러그인을 받는 것으로 선택할 수 있다.
나는 suggested plugin을 받아주었다.
5. 다음 계획 짜기
- 블루/그린이라면, 도커 컨테이너를 그 때 마다 8081, 8082로 뽑아주어야 하고, 이를 NginX가 8080으로 연결해 외부에서 8080으로 요청을 받고 내부에서 8081/8082포트로 받게 설정해주어야한다.
- 해당 NginX의 로드 밸런싱은 블루/그린마다 다르게 설정되어야한다.
- 젠킨스 CI/CD를 어떻게 설정할것인가? (파이프라인은 어떻게 만드는 것인가?)
- 멀티모듈을 어떻게 설정할 것인가?
- docker-compose를 어떻게 사용할 것인가?
이러한 과정을 추가적으로 진행해야 한다.
하나씩 공부해서 다 정복해내봐야 겠다.
그럼...twenty thousand...🔥
'냉메추' 카테고리의 다른 글
[냉메추] 이제 언어가 늘어갑니다!!! JS도 씁니다!! (0) | 2024.05.20 |
---|---|
[냉메추] 서버가 터진 건에 관하여...(자원관리를 잘하자) (1) | 2024.05.01 |
[냉메추] 멀티모듈로 구현을 한다는 것. 서버가 많이 필요하다는 것. (0) | 2024.04.29 |
[냉메추] 학교에서 새로운 서비스를 만들어보게되었다..! (0) | 2024.03.28 |