분류 전체보기
-
테스트 코드Java & Spring 2024. 6. 13. 20:00
테스트 코드?기능과 동작을 테스트하는데 사용되는 코드를 말한다.개발자가 요구사항에 맞게 개발한 기능이 의도대로 정확히 동작하는지 검증하는 절차를 코드화 해 놓은 것그럼 왜 작성해야 하나?- 개발관점신규 기능 개발 과정 중 예상하지 못했던 문제를 미리 발견할 수 있고 작성한 코드가 의도한 대로 동작하는지 검증할 수 있다.-리팩토링관점단순 구조 변경(중복, 제거, 캡슐화 등) 을 적용 했을 때, 이전과 동일하게 기능이 정상 동작하는지 확인할 수 있다.코드 수정이 필요한 상황에서 유연하고 안정적인 대응을 할 수 있다.테스트의 종류?테스트 종류는 테스트 대상 범위나 성격에 따라 3가지로 구분 된다.UI, Service, Unit Test 등으로 구분한다.Unit Test란? 그리고 장점과 단점가장 작은 단위로 ..
-
자바 기본형 과 참조형Java & Spring 2024. 6. 12. 18:33
대원칙: 자바는 항상 변수의 값을 복사해서 대입한다.자바에서 변수에 값을 대입하는 것은 변수에 들어 있는 값을 복사해서 대입하는 것이다.기본형, 참조형 모두 항상 변수에 있는 값을 복사해서 대입한다. 기본형이면 변수에 들어 있는 실제 사용하는 값을 복사 해서 대입하고, 참조형이면 변수에 들어 있는 참조값을 복사해서 대입한다.기본형(Primitive Type): int , long , double , boolean 처럼 변수에 사용할 값을 직접 넣을 수 있는 데이 터 타입을 기본형이라 한다. 참조형(Reference Type): Student student1 , int[] students 와 같이 데이터에 접근하기 위한 참조 (주소)를 저장하는 데이터 타입을 참조형이라 한다. 참조형은 객체 또는 배열에 사..
-
자바 클래스Java & Spring 2024. 6. 11. 15:52
클래스는 객체를 생성하기 위한 틀이고, 인스턴스는 클래스를 토대로 생성된 실제 객체입니다. 클래스는 속성과 동작을 정의하며, 인스턴스는 클래스의 정의에 따라 구체적인 데이터와 동작을 갖는 개별적인 객체입니다. 예를 들어 Student 클래스를 정의pubilc class Student { String name; int age; int grade; }class 키워드를 사용해 학생 클래스(Student)를 정의, 학생 클래스 내부에는 이름(name),나이(age),성적(grade) 변수를 가진다.이렇게 클래스에 정의한 변수들을 멤버 변수 또는 필드라고 한다.멤버 변수(Member Variable): 이 변수들은 특정 클래스에 소속된 멤버이기 때문에 이렇게 부른다.필드(Field): 데이터 항목을 ..
-
jib을 사용한 Java애플리케이션 컨테이너화 중 Docker 권한 문제사소한 트러블 슈팅 기록 2024. 3. 6. 13:38
jib이란? Java 애플리케이션을 컨테이너 이미지로 패키징하기 위한 오픈 소스 도구이다. Googole Cloud에서 개발하였고 개발자가 Java 애플리케이션을 쉽고 빠르게 컨테이너화 할수 있게 도와줍니다. 1. Docker 불필요 : Jib은 Docker 데몬이나 사전 설치 없이도 컨테이너 이미지를 생성할 수 있습니다. (빌드환경 간소화) 2. 빌드 도구 통합 : Maven과 Gradle 플러그인으로 제공 3. 직접 레지스트리 푸시 : 생성된 이미지를 직접 컨테이너 레지스트리에 푸쉬할 수 있음 (Docker Hub, GCR, ECR 등 주요 레지스트리를 지원) 구성 build.gradle 구성이고 이미지는 Docker Hub 레포이다. plugins { id 'java' id 'org.springfr..
-
Kubernetes, Telepresence사용한 로컬 환경 구성k8s 2024. 3. 5. 15:21
Telepresence? 로컬 머신에서 Kubernetes 클러스터의 서비스를 개발하고 디버깅할 수 있게 해주는 오픈소스 도구이다. 클러스터 내의 네트워크 환경을 로컬로 연결하여, 개발자가 로컬에서 코드 변경을 하고 결과를 실시간으로 테스트 하면서 클러스터의 다른 서비스와 상호작용할 수 있도록 도와줍니다. 특히 마이크로서비스 기반의 애플리케이션 개발에 유용하며, 로컬에서 클라우드 환경의 리소스를사용할 수 있게 함으로써 개발 사이클을 빠르게 반복할 수 있도록 도와줍니다. Telepresence 이전에 로컬 환경에서 Kubernetes 클러스터의 서비스에 접근하기 위한 방법은? 1. Port Forwarding : 클러스터 내부 서비스의 포트를 로컬 포트에 바인딩하여 접근하는 방법 2. NodePort/L..
-
Kubernetes, EFK (ElasticSearch, Fluent-bit, Kibana) 구성k8s 2024. 2. 26. 10:17
도입 이유 쿠버네티스는 시스템을 유지하기 위해 자체적으로 오류를 감지하고 복구하는 메커니즘을 가지고 있습니다. (self-healing기능) 예를 들어 컨테이너가 비정상적으로 종료되거나 반응이 없을 때, 해당 Pod를 자동으로 재시작 합니다. Pod가 재시작되면 해당 Pod가 사용하던 컨테이너 인스턴스는 제거되고, 새로운 컨테이너와 인스턴스가 생성되는 과정에 기존 컨테이너 로컬 저장소에 있던 로그 파일들은 삭제가 됩니다. Pod안에 임시 볼륨이 삭제되고 새로운 파일 시스템이 생성되기 때문입니다. 하지만 운영을 하는 입장에서 왜 Pod가 재시작이 되었는지 알아야 되기 때문에 컨테이너가 살아있을때 외부 로그 저장소에 로그를 수집,저장,분석하여 서비스의 안정성 및 로그 관리를 위해 EFK를 도입 했습니다. 개..
-
Kubernetes,Prometheus Alertmanager 구성k8s 2024. 2. 22. 15:43
도입이유 프로젝트를 진행하던 중 어떻게 하면 모니터링을 효율적으로 사용할 수 있을까, 대시보드를 세분화 할까 ~~ 근데 Grafana를 하루종일 볼 수 없잖아 등등 커뮤니케이션을 하는 도중 Slack을 이용한 Alertmanager를 도입하기로 결정했습니다. Alertmanager는 Slack을 포함한 다양한 수신자에게 경고를 보낼 수 있는 기능을 제공합니다. Kubernetes 클라우드 환경에서 운영되는 서비스와 애플리케이션의 상태를 Prometheus를 통해 모니터링하고 있는 상황에서 Prometheus가 제공하는 Alertmanager 사용하는것이 맞다고 판단했습니다. 또한, Grafana 대시보드를 지속적으로 모니터링하는 것이 실용적이지 않다고 판단했고 현재 진행하는 프로젝트는 비용적인 제한이 있..
-
Alertmanager Slack연동 시 빈내용 반환사소한 트러블 슈팅 기록 2024. 2. 20. 11:02
상황 아래 이미지와 같이 Text부분만 전달되고, 템플릿 변수는 빈값으로 넘어오는 상황 해결과정 로그 확인 ( 딱히 이상 없고 잘 전달되고있음) # 명령어 k logs alertmanager-kube-prometheus-stack-1706-alertmanager-0 -n monitoring # 결과값 ts=2024-01-29T07:36:41.238Z caller=coordinator.go:126 level=info component=configuration msg="Completed loading of configuration file" file=/etc/alertmanager/config_out/alertmanager.env.yaml ts=2024-01-29T07:48:20.187Z caller=coo..