본문 바로가기

분류 전체보기24

Kustomize, Helm Chart 시스템 구축 Helm은 템플릿 엔진이고 Kustomize는 오버레이 메커니즘을 따릅니다. Helm Chart에서 템플릿된 YAML 파일을 불러옵니다. Kustomize 가 환경별(Dev,Stg,Live) 로 YAML 파일을 수정(Patch/Overlay) 합니다. 완성된 Yaml 이 쿠버네티스에 배포됩니다. ARGOCD_MANIFEST 프로젝트 ArgoCd에서 사용될 Gitops Repository Name: Gitlab에 생성된 각 프로젝트 이름으로 생성됨 Kustomize: 배포 리소스 모듈화 base: kustomization.yaml: helm chart 연동 규격에 대해 정의 values.yaml: helm chart template 에서 사용할 변수값 정의 dev, stg, prod kustomizatio.. 2024. 2. 9.
NCP FE 부하 이슈 해소기 테스트 결과 (RS 10개 → 170개) Request 수가 10K 가 넘어가자 반응 속도가 점점 느려지기 시작한다사용자들은 Cache 된 Data 들을 받을테니, Nginx 가 뻗지만 않으면 이슈는 없을 것으로 보임그러나 Pod 의 리소스는 이슈가 될만한 상황이 없으나, 실제로는 응답속도가 느려짐Node 의 리소스 이슈로 보이며, MSP 에 Machine 성능 관련 문의더보기문의주신 VM 당 Network Traffic Bandwidth (Max)와, Disk I/O 성능에 관한 네이버 공식 자료를 기반으로 한 답변 전달드립니다.VM 당 Network Traffic Bandwidth (Max)현재 네이버 클라우드 상에 구성되어있는 서버기준 (XEN)  기본 1Gbps를 지원하고 있으며 VM의 메모리가 .. 2024. 2. 9.
[ArgoCD] K8S 환경에 ArgoCD 뿌리기! 도입  목적K8S에 배포되는 애플리케이션을 모니터링하기 위한 효과적인 웹 UI를 제공하는 동시에 더 빠르고 안전한 배포 지원을 하기 위해 도입하게 되었다. Architecture of Argo CDArgo CD는 실행 중인 애플리케이션을 지속적으로 모니터링하고 현재(라이브) 상태를 Git 리포지토리의 지정된 상태(원하는 대상 상태라고 함)와 비교하며 Kubernetes 컨트롤러로 구현되었습니다.현재 상태가 대상 상태와 다른 배포된 응용 프로그램은 동기화되지 않은 것으로 간주됩니다. Argo CD는 현재 상태를 원하는 대상 상태로 자동 또는 수동으로 다시 동기화하는 기능을 제공하면서 차이점을 보고하고 시각화합니다. Git 리포지토리에서 원하는 대상 상태에 대한 변경 내용은 자동으로 적용되고 특정 대상 환경.. 2024. 2. 9.
[ArgoCD] Teams 연동기 구축 계기 ArgoCD의 각 Application의 Health Check하여 teams로 알림을 발송하여 접속하여 확인하기 전까지 알 수 없는 불편함을 해결하고 배포 상황을 파악할 수 있도록 구성하게 되었다. Teams 컨넥터 설정 1. 알림을 보내고자 하는 채널에서 컨넥터 선택 2. Incoming Webhook 구성 선택 3. Webhook의 이름과 보여질 이미지를 업로드 한다. 4. 만들기를 누르면 아래와 같이 Webhook 링크가 생성된다. 추후에 K8S에 배포 되어 있는 ArgoCD Secert에 넣어야 함으로 해당 링크를 잘 복사해 둔다. ArgoCD Config Map 설정 Webhook URL 의 암호화를 위해 argocd-notification-secret 을 통해 주입을 받게 설정합니.. 2024. 2. 9.
[AWS] Bastion을 이용한 Infra 구조 설계하기 인터넷 라우팅 1. 사용자가 웹 브라우저를 열고 www.site.com 에 대한 요청을 보냅니다. 2. www.site.com의 요청은 일반적으로 인터넷 서비스 공급자(ISP)가 관리하는 DNS 확인자로 라우팅됩니다. 3. ISP DNS 확인자는 www.site.com의 요청을 DNS 루트 이름 서버로 전달합니다. 4. DNS 확인자는 www.site.com의 요청을 이번에는 .com 도메인의 TLD(최상위 도메인) 이름 서버 중 하나로 다시 전달합니다. 도메인 이름 서버는 example.com 도메인과 연결된 Route 53 이름 서버 4개의 이름으로 응답합니다. DNS 해석기는 나중에 사용할 수 있도록 Route 53 이름 서버 4개를 캐시합니다. 5. DNS 해석기는 Route 53 이름 서버를 선.. 2023. 12. 12.
[Tomcat] MathType Container Server 구축기 (1) 개발 중인 서비스에서 프론트 측에서 수식 키보드가 필요하다는 요청이 들어왔다. MathType... 이게 뭐지 싶었지만 공식문서에 설명이 잘 나와 있어서 순조롭게 진행 되었다. 현재 요구사항은 수식을 호출할 수 있는 도메인 서비스 구축이다. Java Servlet / PHP를 이용한 가이드 문서 링크 https://docs.wiris.com/mathtype/en/mathtype-integrations/mathtype-for-html-editors/mathtype-generic-integration.html MathType Generic integration Important complementary information docs.wiris.com php는 사용해본적이 없어.. Servlet 기반으로 구축.. 2023. 11. 22.
[GIT] Fork & Pull Request 프로젝트를 진행하면서 팀원들의 이해를 돕고자 Fork와 PR 과정에 대해 정리를 하게 되었다. Fork와 PR(Pull Request) 아래 그림과 같이 Pet-K-In repository와 개인 repository가 있다라고 가정해 보자. 누군가가 Pet-K-In Service 에 기여하고 싶어 할때 다른 사람의 저장소의 코드 변경하려면 해당 프로젝트의 관리자가 직접 나를 Contributor로 등록을 해주어야 한다. 모든 사람을 아무나 등록해 줄수는 없는 노릇이기에 이때 사용하는 것이 Fork의 기능이다. Fork Fork는 간단히 말해 타인의 저장소에 있는 레파지토리를 내 원격 저장소인 깃허브로 가져오는 것이다. Fork를 진행하면 자신의 원격 저장소로 가져온 소스를 확인할 수 있고, 하단 그림과 .. 2023. 11. 19.
[NCP] Nginx를 이용한 Static Resource Container service 구축기(2) nginx 설정에 대해 지난 정리하는 글에서 이어집니다! https://dev-junhee.tistory.com/69 [NCP] Nginx를 이용한 Static Resource Container service 구축기(1) Naver Cloud Platform에 몇가지 기능의 부재로 프론트 소스 도메인 서비스를 위해 nginx를 통한 정적 리소스 서버를 구축하였고, 쿠버네티스와의 연동과 오케스트레이션을 위해 컨테이너 기반으로 구 dev-junhee.tistory.com 기본적으로 k8s 클러스터, 마스터, 워커노드를 편하게 구성할 수 있도록 제공되는 nks를 사용하고 있습니다. 인프라 설계에 대한 부분에 설명은 추후에 진행중인 사이드 프로젝트에 적용 예정이여 패키지로 제공하는 서비스 없이 직접 구현 해보면.. 2023. 11. 13.
[NCP] Nginx를 이용한 Static Resource Container service 구축기(1) Naver Cloud Platform에 몇가지 기능의 부재로 프론트 소스 도메인 서비스를 위해 nginx를 통한 정적 리소스 서버를 구축하였고, 쿠버네티스와의 연동과 오케스트레이션을 위해 컨테이너 기반으로 구축하기로 하였다. Nginx 설정 Resource serving 흐름 및 구성도 Nginx Configure – 전체적인 설정에 대한 설명 Nginx Configure – 세부 설명 location 문법 우선순위 regex 적용 순위 설명 문법 = 1 순위 완전 일치 location = / { } ^~ 2 순위 prefix 일치 location ^~ / { } ~ 3 순위 대/소문자 일치 location ~ ^/ { } ~* 4 순위 대/소문자 무시하고 일치 location ~* ^/admin { }.. 2023. 10. 26.
Trie 자료구조 - 14425 https://www.acmicpc.net/problem/14425 문제 총 N개의 문자열로 이루어진 집합 S가 주어진다. 입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어진다. 입력으로 주어지는 문자열은 알파벳 소문자로만 이루어져 있으며, 길이는 500을 넘지 않는다. 집합 S에 같은 문자열이 여러 번 주어지는 경우는 없다. 출력 첫째 줄에 M개의 문자열 중에 총 몇 개가 집합 S에 포함되어 있는지 출력한다. Tri.. 2023. 7. 19.
[Item49] 매개변수가 유효한지 검사하라 메서드, 생성자에서 받은 매개변수가 특정 제약에 만족해야 한다면 오류는 발생한 곳에서 잡아야 하며 반드시 *문서화를 해야한다. *문서화 (제약의 설명을 문서화 하고 예외의 경우 @throws 자바독 태그를 사용하여 문서화 할 수 있다.) 매개변수 검사를 제대로 하지 못하면 잘못된 결과, 모호한 예외, 해당 지점 이외에서 발생하는 문제를 초래할 수 있다. 다시 말해 *실패의 원자성을 지키기 위해 매개변수의 검사는 필요하다. *실패의 원자성 (예외를 던지고 난 뒤에도 객체는 상태가 이전 상태와 동일하며 사용가능한 형태로 남아야한다.) Objects Utility Class NullPoniterExceptoin, IndexOutOfBoundsException 등의 예외에 대한 유효성 검사에 도움을 주는 Obj.. 2023. 7. 13.
LinkedList 직접 구현해 보기 요약 정리 LinkedList(연결 리스트)를 구현하기 앞서 해당 자료 구조에 대해 알아보자. 우선 List라고 하면 인덱스 구조로 위치를 갖고, 순서를 보장하는 자료구조라고 설명할 수 있겠다. 더 나아가 LinkedList는 삽입 / 삭제의 장점을 갖지만, 특정 노드 탐색시 다른 List에 비해 오래 걸린다는 단점이 있다. 삽입 / 삭제의 장점을 갖을 수 있는 이유는 LinkedList의 종류에 따라 다르지만, 모두 노드의 연결로 이루어져 있으며 인접 노드의 주소를 포인터로 가르키고 있어 중간에 삽입 / 삭제가 이루어 져도 해당 노드를 끊고 인접 노드의 주소를 연결해 주면 될뿐 대표적인 ArrayList처럼 데이터를 미루거나 당기는 작업이 필요 없다. LinkedList에는 Singly, Doubly,.. 2023. 7. 11.