일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ELB
- REPLICATION
- springboot
- Elastic Load Balancing
- codepresso
- ASG
- ci/cd
- Redis
- docker
- k8s
- Jenkins
- 아키텍처
- kubernetes
- AWS
- Typesript
- NoSQL
- TypeScript
- 코드프레소
- Auto Scaling Group
- Today
- Total
목록전체 글 (26)
Study Note
저번에 Github에 Commit을 하면 Jenkins에서 다운로드와 Build를 하고 다른 EC2에 자동 배포하는 것까지 했습니다. 이번에는 저번 사용하던 jenkins 서버와 docker를 사용하여 빌드 / 배포 자동화를 해보겠습니다. 저번에 Jenkins로 Build하여 jar파일을 만드는 부분까지 같습니다. [ ] Dockerfile과 jar파일로 docker image를 생성하여 docker hub에 업로드 합니다. 배포서버인 ec2에 접속하여 docker hub에 업로드 되어있는 docker image를 다운받고 실행합니다. 이전 글을 보고 이 글을 보시는걸 추천드립니다. 2020/02/22 - [Jenkins] - Github + Jenkins 연동과 Jenkins로 Build 후 ssh로 ..
AWS EC2를 이용하여 Ubuntu에 Elasticsearch를 설치하려 합니다. Java 설치 Elasticsearch를 사용하기 위해선 java 8 이상이 설치되어 있어야 합니다. 만약 설치를 해야 한다면 다음과 같이 설치하면 됩니다. sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install openjdk-8-jdk Elasticsearch 설치 여기에서 다운로드 링크를 얻을 수 있습니다. 저는 최신 버전인 7.6.1을 설치하겠습니다. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.1-amd64.deb sudo d..
저번에는 jenkins에서 build 하는 것까지 했습니다. 이번에는 build를 한 후에 다른 ec2에 ssh로 연동을 통해서 배포를 하겠습니다. 먼저 이전에 jenkins가 설치되어 있는 ec2에서 cat /home/ubuntu/.ssh/id_rsa.pub를 통해 id_rsa.pub을 복사합니다. 복사한 값을 배포할 ec2의 authorized_keys에 추가합니다. authorized_keys는 ubuntu의 경우 /home/ubuntu/.ssh/authorized_keys에 기본적으로 만들어져 있습니다. vim /home/ubuntu/.ssh/authorized_keys 명령어에서 알 수 있듯이 vim 에디터로 붙여 넣습니다. 1번 값은 ec2 접속할 때 사용하는 .pem 파일의 인증 값입니다. ..
다음 그림과 같은 형식 CI/CD를 구현해 보겠습니다. Jenkins 설치 OS가 ubuntu인 ec2에 jenkins를 설치하겠습니다. jenkins는 java가 설치되어 있어야 하기 때문에 java를 설치하겠습니다. 다음과 같이 openjdk-8-jdk를 설치합니다. 1 2 3 sudo add-apt-repository ppa:webupd8team/java sudo apt update sudo apt-get install openjdk-8-jdk java -version을 통해 java가 잘 설치되었는지 확인합니다. 저는 maven으로 build할 예정이기 때문에 sudo apt-get install maven를 통해서 maven을 설치합니다. mvn -vsertion 또는 mvn -v를 통해 버전을..
IoC란 IoC는 Inversion of Control의 약자로 제어의 역행이라고 하며 결합도와 관련된 개념입니다, 자바 기반으로 application을 개발할 때 객채의 생성, 제어, 의존관계 등 개발자가 직접 코드로 처리해야 합니다. 제어의 역행은 위와 같은 작업을 컨테이너로 처리함으로써 객체 생성, 의존관계에 대한 소스코드가 사라져 낮은 결합도를 이룰 수 있습니다. 컨테이너의 예로 servlet 컨테이너가 있습니다. 간단하게 다음과 같은 순서로 진행됩니다. web.xml 파일을 로딩하여 컨테이너가 구동된다. client로 부터 /index 요청을 받는다. url과 맡는 객체를 찾아 home() 메소드를 호출한다. home()의 결과를 client로 전송한다. home() 메소드에서 return을 "..
Model 1 Model 1에서는 2개의 파일을 개발한다. JSP 파일을 통해 Controller와 View를 작성하고 JavaBean (Java 객체)를 통해 Model을 작성한다. JSP 파일이 java와 markup(HTML / CSS 등) 코드가 같이 있기 때문에 코드가 복잡해지고 유지 보수가 어렵게 된다. Controller : 사용자의 Request를 확인하고 필요한 데이터를 Model에 의뢰한다. 그 데이터를 View에 반영하여 사용자에게 Response 한다. Model : Controller의 의뢰를 통해 CRUD를 DBMS에게 요청하고, 그 결과를 Controller에게 돌려준다. View : http / css / javascript 등의 실질적으로 화면에 보이는 부분인다. Model..
라이브러리 하나의 프로그램 로직을 재활용하기 위해 만들어 놓은 함수의 집합이다. 라이브러리를 사용하면 프로그래밍을 하는 사람이 자신의 방식에 맞추어서 큰 골격부터 세세한 부분까지 프로그래밍이 가능하다. 프레임워크 프레임워크도 라이브러리와 같이 함수의 집합이지만 이미 프로그램의 골격이 이루어져 있어 그 기준에 맞추어서 만들어야 한다. 간단히 라이브러리는 프로그래머가 마음대로 만들 수 있다면 프레임워크는 정해진 틀에 맞추어서 만들어야 한다. 프레임워크 장점 빠른 구현 시간 : 골격 코드인 아키텍처를 프레임워크가 제공함으로써 프레임워크를 사용하지 않을 때보다 구현 속도가 빠르다 쉬운 관리 : 프레임워크가 같은 어플리케이션들은 아키텍처가 같아 관리하기 쉽다. 개발자들의 역량 획일화 : 숙련자나 초보자가 프레임워..
Technical Debt은 개발 단계에서 제대로 개발을 하지 않으면, 나중에 이자가 붙어 더 많은 일을 해야 한다는 뜻이다. 여러 원인중 다음과 같은 주요 원인을 통해 Technical Debt가 발생한다. 비스니스 조직으로부터으 무리한 압박 부정확한 요구 사항이나 잦은 변경 잘못된 의사 결정 프로세스 부족한 협업 부족한 테스트 부족한 문서화 리팩토링 지연 낮은 수준의 아키텍처 설계 Technical Debt가 꼭 나쁜 것은 아니다. 회사에서 부채를 유지하면서 다른 곳에 투자할때 이익이 생길수 있다. 이처럼 Technical Debt이 발생 시키면서 개발 인력을 다른 곳에 투자함으로써 더 좋은 효과를 낼수 있다. 중요한건 Technical Debt의 비율이다. Technical Debt, 아키텍처, 기..