반응형

전체 글 226

[Knowledge] Private IP & Public IP 간단설명! 쉬운이해!

오늘은 간단하게 Public IP와 Private IP에 대해 정리하려고한다.! 1. Public IP 공인IP라고 불리며, 외부 네트워크와 통신할때 사용하는 IP 주소 ISP(Internet Service Provider)에서 할당되며 외부에 공개되어있는 IP이다. 유일성이 보장되며, 별도의 제한이 없다면 외부에서 접근이 가능하다. 2. Private IP 동일한 네트워크 내에서 사용되는 내부 IP 주소 쉽게 보면 외부 네트워크를 통해 할당받은 IP를 통해 접근할수 있는 두번째 단계의 내부 네트워크에 사용되는 IP라고 보면 된다. IPv4의 주소 부족때문에 Subneting 된 IP이기에, 라우터를 통해 로컬 네트워크 상에 할당된다. Public IP Private IP 범위 : 전세계적(global)..

[Database] Index란? Index의 방식 및 개념

음... 알고있던 내용도 다시 정리하는 반성의 시간을 가져야겠다.. 최근 충격적이게도 당황하여 설명을 제대로 못한 부분들에 대해 마음이 안좋은상태... 반성하고 차근차근 다시 확인해보자.. 우선 Database의 Index는 가장 흔하게 접할 수 있는 개념이다. 그렇다면 Index는 무엇이고, 내부적으로는 어떻게 이루어져 있는지, 그리고 Index를 어떻게 설계할 수 있는지 생각해보자. Index란? 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조. 모든 테이블을 조회하게 되면 시간이 오래걸리게되고, 그래서 Index를 활용하게 된다. Index로 정해진 Column을 기준으로 조회하게 된다면 어떻게 빠르게 조회하게 되는것인가? Index는 어떻게 이루어 져있..

[Knowledge] MSA 트랜잭션 Two-Phase Commit 과 Saga Pattern을 알아보자~!

이번에는 MSA 구조에서의 트랜잭션 관리를 어떤식으로 하는지 알아보도록 하자. 보통 모놀로틱 시스템 구조에 관계형 데이터베이스를 사용하는 곳에서는 DB자체에서 제공하는 트랜잭션을 통해 일관성있는 처리를 진행할 수 있다. 하지만 MSA구조에서는 A서버 B서버 각각 트랜잭션이 별도로 진행되기 때문에 둘중하나가 rollback됬을때 다른 쪽 서버에서는 알지 못하기 때문에 트랜잭션의 일관성을 유지할 수가없다. 이럴때는 어떻게 해야될까?? 필자는 공부를 하기 전에 그냥 생각해봤을때, 아는 지식 내에서 처리를 어떻게 하지? 라는 종착점은 메시지 큐를 사용해서 이벤트기반으로 Success Fail에 대한 정보를 받아 사용하면 되지 않을까 였다. Kafka,MQ 등등? 하지만 예상이고, 실질적으로 보장되어있는 방식이 ..

[Knowledge] RPC란?? RPC의 간단한 개념..

최근 RPC라는 말을 드문드문 보게되었다. 알아보고 싶은것들이 계속 많아지는 시기라.... 간단간단하게 공부하면서 차후에 제대로 알아봐야겠다...! RPC(Remote Procedure Call)란? 원격 제어를 위한 코딩없이 다른 주소 공간의 함수나 프로시저를 실행할 수 있게 하는 프로세스간 통신방식이다. 여기서 함수는 Input이 있으면 output이 있는 Return값이 있는 아이이고, 프로시저는 명령이 수행하는 절차를 통한 개념적인 아이이다. 그렇다면 RPC는 어디에 쓰는것인가!? 보통 프로세스들은 자신이 할당받은 주소공간안에 있는 함수들을 실행한다. 이때 A프로세스가 주소 공간이 다른 B프로세스의 함수를 실행시키고 싶을때 사용하는 프로토콜이라고 보면 될것 같다. (자기것이 아닌 남의것을 자기것인..

[Knowledge] Mutex / Semaphore 란?

이번에는 Mutex와 Semaphore에 대해서 알아보도록 하자..! 데드락 관련된 내용을 타고 들어가다보면 나오는말인데,,,, 말로 설명하는데 어려움이 있어 정리해두려고한다...! 공유된 자원에 여러 프로세스가 동시에 접근하면서 문제가 발생할 가능성이 있는데 이럴때 공유된 자원에 대해 접근을 통제하는 방식이다. Mutex란? MUTual EXclusion '상호 배제'라고 한다. 데드락 방지 4가지중에 있는것...! Critical Section을 가진 Thread의 running time이 서로 겹치지 않게, 각각 단독으로 실행되게 하는 기술이다. 다수의 쓰래드(또는 프로세스)들의 공유 리소스에 대한 접근을 locking/unlocking을 통해 관리한다. 1). 단 하나의 프로세스/스레드만 접근 가..

[Spring-boot] Spring cache란? 사용방법 및 기본

최근 면접에서 알게된 Spring Cache에 대해 알아보려고한다. 기존 Cache라고 하면 Redis와 같은 Inmemory DB를 사용해서 캐싱해두고 (이를 글로벌캐시라고 한다.) 데이터를 빠르게 가져다 쓰는것만 알고있었는데, 각 모듈(서버)별 동기화가 필요없거나 해당 모듈에서만 사용하기엔 (로컬캐시 형태) Spring Cache가 적합하다고 느껴졌다. 캐시는 반복적으로 동일한 데이터를 사용할떄 유용하게 사용된다. 예를들어 한번 조회했던 결과를 캐싱해놓고 다음번엔 굳이 조회를 통하지않고 캐싱되어있는 데이터만 사용하면 효율적인것...! Spring 캐시(Cache)의 추상화 캐시 서비스는 트랜잭션 처럼 AOP를 이용해 메소드 실행 과정에 적용될수 있다. 간단하게 보면 Aop를 사용해서 캐싱시켜놓고 메인..

[SpringBoot] Spring Batch 개념과 간단 예제 -1

오늘은 정리를 해놓지 않은 Spring Batch에 대해 기록해 두려고 한다. Scheduler와 함께 일련의 작업을 정해진 로직을 수행하기 위해 많이 사용하며, 대용량 데이터를 핸들링할때 주로 사용된다. 스프링 배치가 제공할 수 있는 상황들을 한번 알아보자. 로깅/추적 트랜잭션 관리 작업의 처리와 통계관리 작업의 실패 후 수동 or 예약 된 재시작 등등 고급스러운 작업을 도와주는 아이이다. 가장 좋은 기능이라고 생각되는것은 작업진행중에 일부 작업이 실패했을때 그 실패 시점을 기록해놓고 다음 재시작을 했을때 실패한 시점부터 다시 실행할 수 있는점..! 그렇다면 배치에 대해 간단한 용어부터 알아보도록 하자 [ 1. Job ] Job : 배치처리 과정 객체. 배치 프로세스 상에서 전체 계층 최상단이다. Jo..

[Algorithm] 프로그래머스 신규 아이디 추천 Java 풀이

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/72410 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 : 정규식을 잘 알았더라면 아주 간단하게 풀수있었을것 같지만... 정규식을 잘몰라 정규식은 쓸수 있는데로만 사용하고, 나머지는 그냥 짜게되었다... 이전 회사에서도 아래 구조 처럼 사용해봐서 메서드를 한번에 호출해서 사용했다. class Solution { public String solution(String new_id) { String answer = new makeNewId(n..

[Algorithm] Programmers 로또의 최고순위와 최저순위 풀이

순위를 어떻게 할지만 잘 결정하면 답이 나온 문제였다.. class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = {}; //0의 갯수를 찾는다. //맞는 번호 갯수를 찾는다. int zeroCnt = 0; int winCnt = 0; for(int lotto : lottos){ if(lotto == 0){ zeroCnt++; }else{ for(int win : win_nums){ if(lotto == win){ winCnt ++; //체크하면 두번은 없으니 break; break; } } } } answer = new int[2]; answer[0] = Math.min(7 - (winCnt + zeroCn..

반응형