본문 바로가기

Spring/ETC21

LogRotate Process 서버를 운영하다보면 로그를 보고 서버의 상태, 장애를 대비합니다. 대부분의 로그 기록을 남기도록 설정하는데, 시간이 지남에 따라 엄청난 크기로 커지게 됩니다. 이러한 것을 대비하기 위해 로그를 잘 관리하도록 설정하는 기능을 logrotate 라고 합니다. 기본 프로세스와 개념만 확인하고, 이후 스터디와 실무 작성은 기존에 작성되어있는 회사의 LogRotate 스크립트를 보고 참고해 작성할 예정입니다. Logratate 실행순서 crontab Cron.daily Logrotate Logrotate.conf Logrotate.d Logrotate 파일구조 데몬 프로그램 : /usr/sbin/logrotate Logrotate 데몬 설정파일 : /etc/logrotate.conf Logrotate 프로세스 설.. 2023. 5. 28.
AWS - IAM IAM : Identity and Access Management 사용자를 생성하고 그룹에 배치하기 때문에 글로벌 서비스에 속합니다. 루트계정을 생성할 때 기본적으로 사용하고 있습니다. 루트계정은 더 이상 사용해서도, 공유해서는 안됩니다, 사용자를 생성해서 사용합니다. 한 조직의 한 사람이 되며, 그룹으로 묶을 수도 있습니다. 아래의 사진처럼 그룹에 속한사람이 있으며, 속하지 않은 사람이 있을 수도 있고, 동시에 여러 그룹에 속한 사람이 존재할 수 도 있습니다. IAM 은 권한을 설정할 수 있습니다. 그룹의 유저들에게 JSON 형식으로 된 문서를 작성해서 정책을 정해줄 수 있습니다. AWS 에서는 사용자에게 최소한의 권한을 갖도록 권장하고 있습니다. 모든 사용자들이 모든 권한을 갖게 된다면 엉망이 될 수.. 2023. 5. 17.
Rabbit MQ 기본 개념 Rabbit MQ 에 대해 알아보기 전에 AMQP 에 대해서 알아보겠습니다. AMQP 는 Advanced Message Queuing Protocol 입니다. 해석 그대로 프로토콜이기 때문에, MQ 를 구현하는 제품은 여러가지가 있으나, Rabbit MQ를 많이 사용합니다. AMQP 에 관련해서 해당 블로그를 참고하면 되겠습니다. https://brunch.co.kr/@springboot/6 스프링 클라우드, MQ 도입 사례(3) - 관련 연구 2 - RabbitMQ | 스프링 클라우드(Spring Cloud), MQ(Message Queuing) 를 연동한 서비스 도입 사례를 공유합니다. 도입 배경 및 아키텍처 결정 관련 연구 1 - 기본 개념 관련 연구 2 - RabbitMQ (현재글 brunch.c.. 2023. 5. 6.
SaaS 가 지켜야할 12팩터에 대해 알아보자. 마이크로서비스 아키텍처를 보면 SaaS 의 개념과 중요성을 알게 됩니다. SaaS 는 Software as a Service 의 줄임말로, 소프트웨어가 필요할 때 즉시 필요한 만큼만 사용할수 있는 서비스 형태를 의미합니다. 즉, 설치형 소프트웨어가 아니라, 특정 기간 이나 기능이 필요할 때 사용하는 것입니다. 또한 클라우드 네이티브 애플리케이션이며, 마이크로서비스 개발과 운영에 좋은 구현 방법입니다. (클라우드 네이티브는 클라우드 환경에 맞는 애플리케이션, 아키텍처, 인프라를 의미합니다 ) SaaS 가 가지고 가야할 특성과 패턴을 12가지의 항목을 나눈 것을 12팩터라고 합니다. 이에 대해 알아보겠습니다. 1. 코드베이스 컴파일을 통해 여러 서버 환경으로 배포될 수 있찌만, 소스 코드 저장소의 원천 소스.. 2023. 4. 22.
사용자 수에 따라 규모 확장하는 기법에 대해, 신입 개발자로 입사한지 벌써 2달이 다되어갑니다. 현재 다니고 있는 회사의 서비스는 다른 대형 서비스(카카오톡 등)과 같이 아직 대규모적인 시스템은 아니지만, 성장성과 환경규제를 생각해보았을 때, 수백만이 이용할 수 있는 서비스라고 생각합니다. 따라서, 대규모 시스템을 설계하는데 있어 어떤 것을 고려해야할지 궁금하고 아키텍처 적으로 학습하고 싶어졌습니다. "가상 면접 사례로 배우는 대규모 시스템 설계 기초" 라는 도서를 참고했습니다. 사용자 수에 따른 규모 확장성을 가장 먼저 소개하며, 어떤 기법을 고려하면 좋을지 먼저 목차를 보겠습니다. - 웹 계층은 무상태 계층으로 - 모든 계층에 다중화 도입 - 가능한 한 많은 데이터를 캐시할 것 - 여러 데이터 센터를 지원할 것 - 정적 콘텐츠는 CDN을 통해 서.. 2023. 4. 15.
로컬 & 세션 스토리지 웹 스토리지는 HTML5 부터 추가된 저장소입니다. 2가지로 로컬 스토리지와 세션 스토리지로 나뉩니다. 로컬 스토리지와 세션 스토리지는 Key 와 Value 값으로 이루어져 있습니다. 로컬 스토리지 - 로컬 스토리지의 데이터는 사용자가 지우지 않는다면 계속해서 브라우저에 남아 있습니다. ( 영구성 ) - 지속적으로 필요한 데이터 저장를 저장합니다. 세션 스토리지 - 브라우저 탭을 닫을 경우 제거됩니다. - 일시적으로 필요한 데이터를 저장합니다. 2023. 3. 25.
자바 메모리 누수 원인 자바 메모리 누수는 더 이상 사용되지 않는 객체들이 GC(가비지 컬렉션) 에 의해 소멸되지 않고 누적되어 메모리의 공간을 차치하고 있는 현상입니다. 정리가 되지 않으면, 누적된 객체로 인해 프로그램의 응답속도가 늦어지면서 성능저하 및 프로그램이 뻗어버릴 수 있습니다. ( Out Of Memory ) 가비지 컬렉션의 동작하는 순서는 간단히 말하면, Young(Minor GC) 영역과 Old(Major GC) 영역을 통해 관리됩니다. Young 영역에서 대부분의 객체가 접근 불가능한 상태가 되기 때문에, 많은 객체들이 해당 영역에서 소멸됩니다. Young 영역에서 지속적으로 살아남은 객체들은 Old 영역으로 이동됩니다. 가비지 컬렉션을 실행하기 위해 Stop the World 라는 작업과, 사용 여부를 판단.. 2023. 3. 8.
리눅스 기본 명령어 정리 - 최신화(23.02.21) 프로젝트 진행 및 배포, 다른 다양한 작업을 하면서 리눅스를 사용할 일이 많아 질 거 같습니다. 이전에 프로젝트를 할 때, 찾아가면서 간단한 명령어만 사용했지만, 조금 더 능숙하게 해야 하는 것은 필수 인 것 같습니다. 여러 블로그를 통해 내가 써보았고, 경력있으신 분들이 자주 사용했던 내용을 정리했습니다. 1. 폴더 이동 관련 - pwd : 현재 폴더 위치 조회 - cd [폴더경로] : 폴더로 이동 - cd ~ : 홈 폴더로 이동 - cd / : 최상위 폴더로 이동 - cd . : 현재 폴더 - cd .. : 이전(상위) 폴더로 이동 2. 폴더 위치 확인 - ls : 현재 위치의 파일 목록 조회 - ls -l : 파일의 상세정보 조회 - ls -a : 숨긴 파일 표시 - ls -t : 파일 생성 시간순.. 2023. 2. 21.
Service 인터페이스는 거의 사용하지 않는다. 프로젝트를 하다보면 다양한 인터페이스를 만들고 인터페이스를 구현하는 형식으로 진행하는 경우가 많습니다. 이전 프로젝트에서는 Service 를 모두 인터페이스로 먼저 생성하고 구현을 진행을 했습니다. 전략패턴이라는 것을 배우면서 갈아끼우는 것이 미래에도 굉장히 좋은 선택이다 라고 생각해 무지성으로 작성했던 것 같습니다. 아래처럼 서비스 인터페이스를 만들고 구현 클래스를 따로 만들어서 로직을 구현했습니다. 막상 작성해보니, 일단 DI 를 사용할 일이 없었고, 작성할 코드량이 많아졌으며 메서드 네이밍이나 매개변수의 타입 등을 변경할 때 인터페이스에서도 고쳐야하는 번거로움이 생겼습니다. 그 중에 장점을 하나 뽑자면, 개인적으로는 메서드(어떤 기능을 하는지) 를 한눈에 볼 수 있다는 점이 있었습니다. public.. 2023. 2. 19.