본문 바로가기

분류 전체보기

(44)
도커 스웜 배경하나의 호스트 OS에서 컨테이너가 많아지게 되면 CPU, 메모리, 디스크 용량 등과 같은 자원이 부족하게 됩니다. 이를 해결하기 위해선 어떻게 할까요? 크게 scale up과 scale out 방법이 떠오릅니다. scale up의  경우엔 하나의 서버 자체의 크기를 키우는 것이고, scale out은 여러대의 서버를 운영하게 하는거죠. 보통 scale out을 많이 사용한다고  알려져있는데 이때 클러스터라는 개념이 등장합니다. 클러스터란 각기 다른 서버들을 하나로 묶어 하나의 시스템같이 동작하게 만들어 클라이언트들에게 고가용성의 서비스를 제공하는 것을 말합니다. 하지만 서버 등록은 어떻게 할건지, 어떠한 서버에 어떠한 작업을 할당할건지 등과 같은 처리해야 될 작업이 증가하게 됩니다. 이때 나오게 된 ..
백트래킹 백트래킹(Backtracking)은 문제를 해결하는 과정에서 가능한 모든 경우를 시도하는 방법입니다. 쉽게 말해, 여러 선택지를 하나씩 시도해보면서 조건을 만족하는 해를 찾는 과정입니다. 만약 어떤 선택이 조건을 어긴다면, 그 선택을 취소하고 다른 선택을 시도하는 방식으로 진행됩니다.백트래킹의 기본 개념상태(State): 현재 선택한 값이나 설정.목표(Goal): 문제의 해결책.유효성 검사: 현재 상태가 목표를 만족하는지 확인.재귀 호출: 다음 상태로 넘어가는 과정.되돌아가기(Backtrack): 더 이상 진행할 수 없는 경우 이전 상태로 돌아가는 과정.예시: 부분집합 구하기부분집합 문제는 주어진 집합의 모든 부분집합을 구하는 문제입니다. 예를 들어, 집합 {1, 2, 3}의 모든 부분집합을 찾아보겠습니..
도망치고 싶을 때 읽는 책 도망치고 싶을 때 읽는 책: 내 느낀 점 정리 전체적 흐름 파악하기일의 전체적 흐름을 파악한 뒤, 내가 할 수 있는 일과 할 수 없는 일을 명확히 구분하는 것이 중요합니다. 모든 일을 혼자서 다 하려고 하지 말고, 자신의 역할에 집중하여 효율적으로 문제를 해결해 나가야 합니다.작은 단위로 나누기일을 작게 나누어서 생각해보는 것이 좋습니다. 큰 문제를 한 번에 해결하려고 하기보다는, 하나씩 해결해 나가는 방법이 더 효과적입니다. 이렇게 하면 스트레스를 줄이고, 성취감을 느끼며 진행할 수 있습니다.책임의 한계 이해하기내가 맡은 일 이상의 책임을 떠맡으려 하지 말고, 스트레스를 줄이는 것이 중요합니다. 또한 남의 일에 지나치게 간섭하려고 하지 말고, 도움을 요청했을 때만 그 부분에 대해 도와주는 것이 좋습니다..
Apache와 Nginx 배경MSA 프로젝트를 간단하게 해보면서 gateway쪽을 담당하게 되었는데, 이 부분이 nginx와 매우 유사하다는 생각이 들었습니다. 평소에도 nginx에 대해 궁금했던 부분이 많았는데 다음에 도입을 고려해보기 전 이번 기회에 nginx의 역사에 대해 조금 알아볼까 합니다.내용Nginx와 Apache: 웹 서버의 진화와 비교안녕하세요! 오늘은 Nginx와 Apache 서버에 대해 깊이 있게 알아보겠습니다. 두 웹 서버는 각각의 장단점과 특징을 가지고 있으며, 서로 다른 상황에서 최적의 선택이 될 수 있습니다. 이 글에서는 두 서버의 역사적 배경, 구조, 장단점, 그리고 어떤 상황에서 각각을 선택해야 하는지에 대해 상세히 설명하겠습니다. Apache서버는 최초의 web 서버 NCSA HTTPd를 대체하기..
코딩테스트 알고리즘 - BFS, DFS 그래프 탐색어떤 것들이 연속해서 이어질 때 모두 확인하는 방법Graph : Vertex(어떤것. 노드) + Edge(이어지는 것. 연결선)BFS너비 우선 탐색 : 자기 자식 우선 탐색시작점에 연결된 vertex찾기 -> 찾은 vertex를 queue에 저장DFS깊이 우선 탐색 : 자식의 자식을 우선 탐색 깊이 우선 탐색 : 자식의 자식을 우선 탐색연결된 vertex 찾기 -> 찾은 vertex를 stack에 저장시간복잡도알고리즘이 얼마나 오래 걸리는지Big-OBFS : O(V+E)사용 자료구조BFS검색할 그래프방문 여부 확인(재방문 금지 목적)Queue : BFS 실행
코딩테스트란? 코딩테스트시간 안에 주어진 문제를 푸는 시험적절한 알고리즘을 선택해서 문제 해결각 알고리즘의 이해개념 이해기본 문제, 코드 따라해보기안보고 작성할 정도로 외우기다른 문제 풀어보기(각 10문제씩 정도)실전 노출한문제에 30분 넘지 않게 풀이매일 알고리즘별로 돌아가면서 풀기풀이 방법이 아예 떠오르지도 않을 경우 구글링으로 풀이 검색오답노트 작성어떤 알고리즘을 선택했는지는 중요하지 않다. 선택한 이유, 풀이 방법과의 연결 과정을 설명하자.필수 알고리즘BFSDFS백트래킹시뮬레이션이진탐색GreedyDPMST다익스트라플로이드코딩테스트 풀이 방법풀기전 최대한 구체적 계획 작성다음 세가지 주석으로 써보고 문제 풀이아이디어 : 문제를 어떻게 풀것인지, 어떤 알고리즘을 사용할 것인지시간복잡도 : 내가 설계한 방법이 오래..
docker compose에서 health check를 활용한 spring boot app 띄우기 배경개발을 조금씩 해나가면서 docker의 소중함에 대해 정말 많이 느끼고 있습니다.. 이번 프로젝트 MSA 환경에서도 docker container를 통해 각 서버를 순서대로 띄우려고 했는데 잘 안됐단 말이죠. 구글링과 gpt를 통해 health check를 사용하면 된다는 것을 알아서 적용을 해보았지만 정상적으로 health 체크가 되지 않는지 자꾸 다음 서버가 제대로 띄워지지 않았습니다.. 튜터님이 actuator를 통해 health 체크를 하면 되지 않을까?라고 살짝 언급을 주셔서 그 부분에 이어서 내용을 시작해 보도록 하겠습니다. 내용먼저 actuator를 활용하기 위해 spring boot의 eureka 서버에 gradle 설정을 해야합니다. spring boot 버전은 3.4.0, jdk는 ..
spring에서 cache 활용 시 key 값 설정 주의점 문제 정의spring boot와 redis를 활용해 cache 저장소를 구현하려고 할 때 발생했던 문제입니다.  @Cacheable(cacheNames = "itemCache", key = "args[0]") public ItemDto readOne(Long id) { log.info("Read One: {}", id); return itemRepository.findById(id) .map(ItemDto::fromEntity) .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND)); } @Cachea..