전체 글 29

2024년 상/하반기 회고 및 2025년 목표

2024년은 작은 변화와 마음에 위기감이 든 해 였다.Mind Control 이 생각보다 안 되었지만 연말에 여러 지인들과 만남을 통해 한 가지를 제대로 느꼈다."내가 현실에 너무 안주하고 있었구나" 지인들의 변화하는 모습을 보니 꾸준한 노력과 목표 설정이 중요하단 생각이 들었다. 2024년 회고를 정리하고 2025년 목표 설정을 해보려 한다.2024년 상/하반기 회고 1. 신규 인력 보강2024년 초 신규 인력 보강이 되었다.그동안 나는 2년 8개월 동안 혼자서 시스템을 운영해왔다.그 과정 중에 파트 선배님들의 도움도 많이 주셨지만 실질적인 시스템 운영자는 나 혼자라 모든 연락과 대응을 도맡아 했다.주기적인 인력 보강 요청에 대한 결과는 굴곡이 많았지만 결국 올해 결실을 거둬 적절한 업무 분장이 진행되..

생각정리 2025.01.05

[개념정리] SOA와 MSA 차이점

* 공부와 업무 정리를 위해 포스팅 합니다.* 정확하지 않는 내용이 있을 수 있으니 참고해주시면 감사하겠습니다. 1. SOA (서비스 지향 구조) 1) 서비스가 서로 통신하는 거대한 서비스 모음. 2) SOA 프레임워크는 모든 구성 요소를 보는 서비스로서, 소프트웨어 구조를 사용하는 시스템을 설계하는 데 사용. 3) 통신은 일반적으로 데이터 전달을 위해 사용했던 SOA에서 제공되며, 두 개 이상의 서비스를 통신하고 여러 활동을 완료할 수 있음. 4) SOA 특징  - Loosely coupled (느슨한 결합)  - Reusable (재사용성)  - Composable (구성 가능)  - Autonomic (자율성)  - Standardized (표준화) 2. MSA (마이크로서비스 구조) 1) 대다수 ..

[개념정리] 추상 클래스 & 인터페이스 차이점 및 특징

* 공부와 업무 정리를 위해 포스팅 합니다.* 정확하지 않는 내용이 있을 수 있으니 참고해주시면 감사하겠습니다.Abstract ClassInterface인스턴스화 될 수 없는 클래스 (객체 생성할 수 없음)인스턴스화 될 수 없는 클래스 (객체 생성할 수 없음)abstract, non-abstract 메소드 선언모두 abstract 메소드 선언일부 메소드 구현 가능 및 일부는 추상적(abstract)으로 남김모든 메소드는 추상적(abstract) 으로 남김추상 메소드는 상속하는 하위 클래스에서 재정의(Overriding) 필요상속하는 하위 클래스에서 모두 재정의(Overriding) 필요  추상 클래스 특징> 추상 클래스는 직접 인스턴스화 될 수 없는 객체 지향 프로그래밍(OOP)의 특정 유형의 클래스이며..

[개념정리] 자바(JAVA) 상속(implements / extends)

* 공부와 업무 정리를 위해 포스팅 합니다.* 정확하지 않는 내용이 있을 수 있으니 참고해주시면 감사하겠습니다. 업무를 하면서 implements와 extends 로 상속된 소스를 많이 본다.그때마다 "상속 되었구나" 정도만 생각하고 넘어갔지만 자세한 개념 이해의 필요성을 느껴 정리해본다. - 클래스는 단 하나의 추상 클래스를 상속할 수 있고 여러 개의 인터페이스를 구현할 수 있다. - 추상 클래스는 객체 타입을 나타내고 인터페이스는 일련의 행동(동작)을 나타내기 때문이다.  - 선언만 있는 interface를 상속하여 재정의(Overriding)하여 사용 - implements 로 상속할 경우 해당 interface의 메소드를 모두 재정의해야 함 - class 파일에서 implements 로 상속받아 ..

로그백(Logback) / 로깅(Logging) 수준 설정

스프링 부트 스타터 패키지(spring-boot-stater-web)에서 제공하는 로그백(Logback)을 정리해본다. slf4j의 구현체로서 스프링 부트의 기본 로그이다.(또 다른 구현체로는 Log4j2 가 있다) 1. TRACE(추적) : 가장 상세한 로그 레벨2. DEBUG(디버그) : 디버깅 목적으로 사용3. INFO(정보) : 정보성 메시지 기록4. WARN(경고) : 경고성 메시지 기록5. ERROR(에러) : 오류 메시지 기록6. FATAL(치명적) : 가장 심각한 오류 메시지 기록7. OFF(해제) : 로그 사용안함  로깅 수준은 스프링부트에서는 application.properties 파일에서 구성할 수 있다.INFO로 지정하면 INFO 레벨 이상에 해당하는 메시지를 볼 수 있다. * 기..

스프링 2024.05.05

'진짜' 목표를 가져야 하는 순간

"시간이 정말 빠르게 지나가는 구나" 라는 것을 체감한다. 그런데 왜 시간의 소중함을 또 다시 잊는 것일까?지금이 작년과 같을 수 없고 내년이 올해와 같을 수 없다. 수많이 계획했던 목표들은 왜 계속 반복되는 것일까?스스로를 객관적으로 들여다 보는 시간을 소요하지 않았다고 결론을 내렸다. 말로만 목표였지 진실된 목표는 아니었다.단순히 지금의 흥밋거리를 채우기 위한 '가짜' 목표였던 것이다. 이렇게 올해도 지나갈 것인가?지금 블로그에 글을 쓰는 것도 이렇게 하지 않으면 작년과 똑같이 보낼 것 같단 불안감이 있기 때문이다.많은 책을 읽었음에도 추구했던 이상적인 모습이 아닌 것은, 현재에 대한 편안함, 만족감, 안주함 이 있기 때문이다. 때로는 미래가 불안했던 20대 처럼 스스로를 긴장감에 빠트려야겠다는 생각..

생각정리 2024.04.07

업무에서 Docker 컨테이너 런타임 경험기

현재 내가 담당하는 시스템은 MSA 설계로 쿠버네티스(k8s)로 여러 컨테이너를 오케스트레이션 하고 있다. 하지만 이미 구축된 시스템을 운영하고 있기에 자세한 내부 기동 프로세스는 알지 못했다. 이번에 운 좋게도(?) 관련 개선 건이 오지 않았다면 말이다. 개선 건 내용은 이랬다. [개선 사항] Mission. 특정 컨테이너에 설치된 메시지 전송 모듈을 교체하라. 해당 모듈을 start/status/stop 만 했었기에 교체 작업에 대해 막막했다. 대략적으로 컨테이너에 기존 모듈을 지우고, 신규 모듈 설치 및 config 설정 파일 변경하여 개발/운영 테스트 시나리오를 구상했다. 1. 구조 파악하기 - 특정 컨테이너 원본 이미지(Docker) 위치 파악 -> (habor repository) - Dock..

자바 메모리 영역(Static, Stack, Heap)

아래 내용에서 틀린 부분이 있다면 댓글 부탁드립니다. 1. Static 영역 1) 전역 변수(Global), 정적 멤버 변수(static 선언) 대상 2) 발생시점 - JVM(JAVA Virtual Machine) 이 동작해서 클래스가 로딩 될 때 생성 - 프로그램이 종료될 때까지 메모리에 남아있음 2. Stack 영역 1) 블록 내에서 선언된 지역 변수(Local) 대상 2) 기본 자료형을 생성할 때 저장하는 공간 / 임시적으로 사용하는 변수 및 정보를 저장하는 영역 2) heap 영역에 올라간 인스턴스의 참조값 저장 3) 발생시점 : - 메서드 호출할 떄마다 개별적으로 스택이 생성 / 종료 시 영역 해제 - Compile 시 할당 3. Heap 영역 1) 참조형(Reference Type)의 데이터 ..

폭포수 방법론 / 애자일 방법론 이해

개발 방법론을 소개하면서 나 또한 이해하는 시간을 가지려 한다. 아직 개발 방법론을 통해 프로젝트를 진행한 경험은 없지만, 늘 듣기만 했었기에 이참에 정리해본다. 제가 이해한 내용에서 틀린 부분이 있다면 피드백 부탁드립니다. 폭포수 방법론(Waterfall) 소프트웨어 개발 단계가 위에서 부터 아래로 폭포에서 물이 떨어지듯이 순차적으로 진행 되는 것을 뜻한다. [개발 단계] - 요구사항분석(Requirement) -> 설계(Design) -> 구현(Implementation) -> 검증(Vertification) -> 유지보수(Maintenance) [장점] - 전체 과정이 수직적으로 진행되기에 각 과정에 대한 이해가 용이하다. [단점] - 앞 단계 일이 끝나지 않으면 뒤 단계를 수행할 수 없다. - 요..