[아키텍쳐 패턴] 모놀리스 구조 및 마이크로서비스 구조
DevOps./Architecture2024. 1. 7. 00:22[아키텍쳐 패턴] 모놀리스 구조 및 마이크로서비스 구조

웹서버를 개발하기 위한 소프트웨어 아키텍쳐 패턴으로 모놀리스 및 마이크로서비스 구조에 대한 포스팅 모놀리스 구조 모놀리스(Monolith) 아키텍처는 하나의 소프트웨어를 구성하는 모든 모듈과 코드를 한 프로젝트에서 관리하는 것을 말한다. 배포 또한 하나의 프로젝트를 실행시키는 것으로 끝. 장점 - 한 프로젝트 디렉토리 내에 모든 모듈 및 코드가 있기에 개발이 간단하고 리뷰가 용이함. - 소프트웨어 구조가 단순하기에 구성이 한눈에 보기 쉬움. - 한 프로젝트를 실행시키면 되기에 배포가 쉬움. - 디버깅 및 에러 대처가 쉬움. 단점 - 한 프로젝트 내에 모든 코드가 있어 코드가 길어짐. >> 코드를 작성하려면 모든 코드를 전부 이해하고 있어야 함. 서비스가 커지면 전체 구조 및 코드 흐름을 이해하기 힘듦. ..

CS/알고리즘2024. 1. 5. 10:51[PS] 백준2151 : 거울 설치(Java)

문제 https://www.acmicpc.net/problem/2151 2151번: 거울 설치 첫째 줄에 집의 크기 N (2 ≤ N ≤ 50)이 주어진다. 다음 N개의 줄에는 N개의 문자로 집에 대한 정보가 주어진다. ‘#’는 문이 설치된 곳으로 항상 두 곳이며, ‘.’은 아무 것도 없는 것으로 빛은 www.acmicpc.net 풀이 3차원 방문체크를 활용한 Dijkstra 풀이 문제이해 문제를 읽고 예제를 보고 이해를 하려는데 개인적으로 상당히 난해했음. 일단 동작과정은 아래와 같음. #이라는 문에 대해서 어느 방향에서든 출발해도 상관없음. 빈칸 ‘.’에 대해 진행방향 그대로 직진만 가능. ‘!’ 칸은 거울 설치 가능한 곳으로써 해당 자리에 거울을 45도 설치 가능. 거울을 설치하게 되면 빛은 직진이 ..

[네트워크] 4계층 - TCP 프로토콜 (전송 과정 설명)
CS/네트워크2024. 1. 2. 13:42[네트워크] 4계층 - TCP 프로토콜 (전송 과정 설명)

본 포스팅은 네트워크 스터디를 기반으로 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! 이번 정리에서는 서버가 클라이언트에게 데이터를 전송하는 과정을 TCP 프로토콜을 사용하여 설명함. 예를들어 서버의 HDD에 저장되어 있는 파일을 클라이언트에게 전송하기 위해서는 File System의 Driver를 통해 해당 파일을 서버 프로세스의 메모리에 올려야 함. 만약 대용량의 데이터를 전송하게 될 때 서버 프로세스의 메모리가 부족한 경우 해당 데이터를 분해해서 메모리에 적재하게 됨. (1.4MB → 64KB씩 분해) 서버 프로세스 메모리에 올려진 데이터의 일부는 Socket을 통해 클라이언트로 전송을 하기위해 TCP단에 있는 또다른 Buffer(메모리)로 카피가 발생 T..

[네트워크] 4계층 - TCP, UDP 프로토콜
CS/네트워크2024. 1. 2. 12:53[네트워크] 4계층 - TCP, UDP 프로토콜

본 포스팅은 네트워크 스터디를 기반으로 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! UDP 프로토콜 안전한 연결을 지향하지 않음. 사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)은 유니버셜 데이터그램 프로토콜이라고 일컫기도 함. UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 함. UDP는 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에 수행할 으로 가정. 일반적으로 TCP에 비해 속도가 빠르다는 장점이 있음. UDP 프로토콜의 구조 Length : UDP 프로토콜 헤더 및 페이로드 길이 포함 총 길이. Checksum : 프로토콜이 ..

[네트워크] 3계층 - IPv4 프로토콜, ICMP 프로토콜
CS/네트워크2024. 1. 2. 12:28[네트워크] 3계층 - IPv4 프로토콜, ICMP 프로토콜

본 포스팅은 네트워크 스터디를 기반으로 개인 정리를 위한 포스팅입니다. 잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다! 3계층 역할 수신처까지 최적의 경로 탐색 (라우팅 역할) 2계층 이더넷에서는 주소로 MAC 주소를 사용했지만, 3계층에서는 MAC 주소는 사용하지 않는다. 그 이유는 MAC 주소는 장소를 특정할 수 없는 주소이기 때문 IPv4가 하는 일 네트워크 상에서 데이터를 교환하기 위한 프로토콜 데이터가 정확하게 전달될 것을 보장하진 않음 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있음. (악의적으로 이용되면 DoS 공격이 됨) 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장함. IPv4 프로토콜 구조 IPv4 프로토콜 ⇒ 다른 네트워크의 특정 ..

[PS] 백준30894 : 유령의 집 탈출하기(Java)
CS/알고리즘2024. 1. 1. 02:36[PS] 백준30894 : 유령의 집 탈출하기(Java)

문제 https://www.acmicpc.net/problem/30894 30894번: 유령의 집 탈출하기 첫째 줄에 유령의 집의 크기 $N, M$이 주어집니다.$(2≤N,M≤200)$ 둘째 줄에 유령의 집의 입구 좌표 $S_x, S_y$, 출구 좌표 $E_x, E_y$가 주어집니다.$(1≤S_x, E_x≤N, 1≤S_y, E_y≤M)$ 좌표 $(x, y)$는 위에서부터 www.acmicpc.net 풀이 3차원 방문체크를 활용한 BFS 풀이 접근법 3차원 방문배열을 활용 각 유령들은 시간에 따라 바라보는 방향이 바뀌는데 총 4가지의 서로 다른 맵이 존재함. 이 점을 활용하여 3차원 방문배열을 통해 각 방문배열마다 유령이 바라볼 수 있는 공간들에 대해 미리 전처리한 후 BFS 탐색을 수행. 소스코드 imp..

[MySQL] 인덱스(INDEX)
CS/DataBase2023. 12. 29. 01:56[MySQL] 인덱스(INDEX)

인덱스(Index)인덱스는 테이블의 동작속도(조회)를 높여주는 자료구조인덱스로 데이터의 위치를 빠르게 찾아주는 역할 SELECT 명령문의 속도는 빨라질 수 있지만 UPDATE, INSERT, DELETE의 속도는 저하되는 단점이 있음. (Table의 index 색인 정보를 갱신하는 추가적인 비용을 소모하기 때문 == 정렬과 관계있음.) 컬럼의 값과 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 놓음.MYI(MySQL Index) 파일에 인덱스가 저장됨. Feature인덱스는 하나 혹은 여러 개의 컬럼에 대해 설정할 수 있다. (복합 인덱스) WHERE 절을 사용하지 않고 인덱스가 걸린 컬럼을 조회하는 것은 성능에 아무런 영향이 없음. MySQL의 경우 BTREE 알고리즘을 활용. 인덱스를 저장..

[PS] 백준1300 : K번째 수(Java)
CS/알고리즘2023. 12. 28. 18:25[PS] 백준1300 : K번째 수(Java)

문제 https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 풀이 파라메트릭 서치를 활용한 풀이 그리디한 접근법 A[i][j]값을 1차원 배열에 기록 후 오름차순 정렬을 통해 원하는 값 B[K]를 구하는 방식 해당 방식으로 풀이하게 될 경우 N^2만큼의 메모리가 필요할 뿐더러 시간 또한 O(N^2)만큼 걸리기 때문에 AC를 받을 수 없음 LowerBound 접근 위의 방식에서 이분탐색을 추가해서 탐색 시간을 줄여야하는데 ..

image