일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jsp
- auto configure
- oracle
- dynamic query
- 백준 알고리즘
- 초대장
- resilience4j
- MongoDB
- JVM
- 자바 프로젝트
- smart cast
- 유사코드
- 리눅스
- 파이썬
- 파이썬 소스
- spring
- 알고리즘
- 오라클 디비
- 오라클
- c#
- 학점
- gradle
- 운영체제
- 문법 정리
- K6
- 티스토리
- SQL
- hyperledger
- 자바
- 프로젝트
- Today
- Total
목록목차 (231)
모종닷컴
7장에서 11장까지는 설계 원칙에 대한 내용들을 다루고 있습니다. 양이 많아 따로 정리를 하려고 할까 했었는데 5장이 모두 서로 관련이 있는 내용들이기에 포스트 하나에 정리하였습니다. 7장: SRP(단일책임원칙) 더보기 “하나의 모듈은 하나의, 오직 하나의 액터에 대해서만 책임져야 한다.” ‘액터’란 변경을 요청하는 한 명 이상의 사람들을 가리킨다. ‘모듈’을 가장 단순하게 정의하면 소스 파일이며, 단순히 함수와 데이터 구조로 구성된 응집된 집합이라고도 일컬을 수 있다. ‘응집된’이라는 단어가 SRP를 암시한다. 단일 액터를 책임지는 코드를 함께 묶어주는 힘이 바로 응집성이다. 이것만 들었을 때 와닿지 않는 부분들이 많다. 그래서 SRP 원칙을 위반하는 징후들을 살펴보면서 이해하는 게 가장 좋은 방법이다..
2023년 모종닷컴의 첫 글 & 새해 인사말 이 포스팅이 2023년의 첫 글이 되겠네요. 의미 있는 포스팅인 만큼 간단하게 인사말 몇 줄 정도는 괜찮지 않을까 해서 꾸역꾸역 끼워봅니다 ㅎㅎ 2022년 힘든 일도 많았던 반면 좋았던 일도 참 많았습니다. 개인적으로 '다사다난'이라는 말이 가장 와닿는 한해였던 것 같아요. 그렇게나 다사다난했던 시간들이 지나가고 어느덧 새해가 밝았네요. 2023년에도 소망하는 일들 모두 이루시고 늘 행복하고 즐거운 일만 가득하시길 기원합니다. 모두 새해 복 많이 받으세요 :) 어느덧 2번째 회고 회고의 시작은 2022년도부터 하기 시작하였습니다. 다만 개인 회고를 포스팅으로 올리는 건 이번이 처음이지 않을까 싶습니다. 작년 회고의 경우 핸드폰 메모장에 끄적이는 정도로 끝났었고..
5장 : 객체지향 프로그래밍 Object-Oriented = 객체지향 객체지향(Object-Oriented, OO)이란 무엇인가요? 객체지향은 데이터와 함수의 조합 ? 객체지향이라는 패러다임이 나오기 훨씬 이전부터 프로그래머는 데이터 구조를 함수에 전달해 왔다. 때문에 객체지향이 데이터와 함수의 조합이라는 말은 성립하지 않는다. 실제 세계를 모델링하는 새로운 방법 ? 객체지향을 사용하면 소프트웨어를 좀 더 쉽게 이해할 수 있다는 데 있는 듯하다. 하지만 의도가 불분명하고 정의가 모호하다. 객체지향의 본질 ? 객체지향의 본질을 설명하기 위해 캡슐화, 상속, 다형을 말한다. 객체지향이 이 세 가지 개념을 적절한 조합한 것이거나, 또는 객체지향 언어는 최소한 이 세 가지 요소를 반드시 지원해야 한다고 말한다...
SQS Standard Queue를 사용 중인데 동일한 메시지를 각 애플리케이션이 중복 수신된 적이 있습니다. 제가 생각한 것들이 맞다면 메시지는 중복 수신되지 않을 것 같았는데 이런 이슈가 왜 발생했는지 궁금하여 좀 찾아봤습니다. 일단 생각했던 아키텍처를 그림으로 그려보면 아래와 같습니다. Queue에서 동시성 처리가 되어있다면 app1, app2, app3에서 동시에 요청하더라도 메시지1, 메시지2, 메시지3이 잘 분배가 되겠지라는 게 기본적으로 깔려있던 전제였습니다. SQS 아키텍처 이제 SQS의 실제 아키텍처를 보면 아래와 같습니다. 큐라고 생각했던 모습과는 완벽하게 다른 형태입니다. 큐에 메시지 삽입 이제 SQS에 메시지를 적재하는 과정과 메시지의 라이플 사이클에 대한 설명을 이어나가도록 하겠습..
3장 : 패러다임 개요 패러다임의 변화 패러다임이란 어떤 프로그래밍 구조를 사용할지, 그리고 언제 이 구조를 사용해야 하는지를 결정하는 프로그래밍을 하는 방법을 말한다. 대체로 언어에는 독립적이다. 구조적 프로그래밍 최초로 적용된 패러다임 1968년 에츠허르 비버 데이크스트라가 발견 무분별한 점프(=goto 문장)는 프로그램 구조에 해롭다는 사실을 제시했다. 데이크스트라는 이러한 점프들을 if/then/else와 do/while/until과 같이 익숙한 구조로 대체했다. 구조적 프로그래밍은 제어 흐름의 직접적인 전환에 대해 규칙을 부과한다. 객체 지향 프로그래밍 구조적 프로그래밍보다 2년 앞선 1966년 올레 요한 달과 크리스텐 니가드에 의해 등장. 알골 언어의 함수 호출 스택 프레임을 힙으로 옮기면 함..
많은 개발자 분들께 책을 추천해달라 하면 클린 아키텍처는 항상 빠짐없이 나오는 책인 것 같습니다. 너무 늦은 감이 있지만 한번 지긋이 읽어보고 있습니다. 아직 3분의 1도 다 읽어보지는 못했지만 책이 재미가 있습니다. 뭔가 술술 읽힌다기보다는 생각할 포인트들이 많아서 고민을 많이 하게 되는데 그런 의미에서 참 재밌는 책인 것 같습니다. 생각날 때마다 이렇게 다시 한번 읽어보면서 생각을 정리해보려고 합니다. 설계와 아키텍처란? 설계와 아키텍처 둘 사이에는 차이가 없다. 흔히 아키텍처는 저수준의 세부사항과는 분리된 고수준의 무언가를 가리킬 때 흔히 사용되고, 설계는 저수준의 구조 또는 결정사항 등을 의미할 때가 많다. 하지만 아키텍트가 실제로 하는 일을 보면 이러한 구분은 무의미하다. 책에서 집을 설계하는 ..
혹시 AWS Simple Queue Service(SQS)를 활용하고 계신가요? 그리고 어떤 이유에 의해서 SQS에서 polling 해오는 부분을 임의로 중지 및 시작할 수 있도록 컨트롤하고 싶으신 적이 있으신가요? 그렇다면 이번 글이 도움이 될 수도 있을 것 같습니다. 저는 위와 같이 SQS를 임의로 중지하거나 시작하는 등의 컨트롤을 해야 하는 경우가 있었고 이 글이 저와 같은 고민을 하고 계신 분들께 도움이 될 수 있을 것 같아 이번 포스팅을 쓰게 되었습니다. 시작하기 전에 먼저 테스트 환경 및 코드를 먼저 맞춰보도록 하죠. 환경 세팅 IAM 사용자 생성 SQS를 사용할 수 있는 사용자 하나를 추가해보도록 하겠습니다. IAM 서비스에 들어가서 '액세스 관리'의 '사용자' 탭에 들어갑니다. 그러면 아래..
이전 포스팅(Circuit Breaker Pattern 그리고 이를 스프링에 적용해보기)에서 예고한 대로 Circuit Breaker의 상태 변화에 따른 이벤트 리스너 추가 및 서킷의 상태를 수동으로 변경하는 법 및 서킷브레이커를 리셋하는 방법을 쓰려고 합니다. 이벤트 리스너 추가 CircuitBreaker를 적용하고 나서 고민했던 포인트 중 하나는 서킷브레이커가 OPEN 상태가 되었을 때 개발자들도 인지를 했으면 좋겠다는 생각이었습니다. 처음에는 서킷브레이커 코드 중에서 상태를 변경하는 부분을 찾아내서 해당 부분을 커스텀하면 되지 않을까?라는 생각을 했었습니다. 서킷브레이커 코드를 조금 찾아보고 나니, 서킷에 이벤트 리스너가 있는 걸 알 수 있었습니다. 관련해서 계속 파고들어 가다 보니 CircuitB..
이슈가 있었던 포스팅 Circuit Breaker Pattern 그리고 이를 스프링에 적용해보기 이슈 : 서킷브레이커가 동작을 하지 않음. 대상 : 2022년 11월 12일 ~ 2022년 11월 27일 사이에 포스팅을 보시면서 코드를 실행했던 분들. 기존 글 그대로 코드를 그대로 설정하고 테스트 시 CircuitBreaker가 제대로 동작하지 않았음을 확인하였습니다. @CircuitBreaker 어노테이션을 사용할 경우 Aop를 이용하여 데코레이팅이 되어야 하는데 이 AOP 관련 디펜던시를 설정하지 않았던 게 문제였습니다. 제 연습용 프로젝트에서는 aop가 이미 설정되어있어서 아무런 문제 없이 코드가 동작했었습니다 ㅠㅠ. 해결방법은 크게 2가지가 있는데 AOP 디펜던시를 추가를 하는 방법과 Circuit..
스왑 메모리가 무엇인지 알아보려고 했는데 마침 정리가 아주 잘되어 있는 블로그 글이 있어 읽으면서 번역도 같이 해봤습니다. 제 번역 실력을 제가 믿지 못하므로 가능하다면 직접 글을 읽어 보는 걸 추천드립니다. 참고 글 https://www.atatus.com/blog/what-is-swap-space/#swap-space https://www.baeldung.com/cs/virtual-memory-vs-swap-space 개요 머신이 로드된 애플리케이션을 실행하고 저장하는 시스템을 위해 모든 프로세서는 데이터 용량이 필요합니다. 이러한 프로세스가 처음에 할당받은 RAM 메모리가 거의 소신되려 할 때 리눅스 swap 기능이 이를 도와줄 수 있습니다. 리눅스 시스템에서 RAM 대신 스왑 공간을 사용하는건 시..