멀티테넌시(Multi-tenancy)란?
·
나의 지식 공유
멀티테넌시(Multi-tenancy)란?멀티테넌시란?멀티테넌시는 하나의 애플리케이션과 하나의 인프라(DB, 서버)를 여러 고객이 함께 쓰면서도, 각 고객의 데이터와 설정은 완전히 분리해서 관리하는 아키텍처다. 여기서 Tenant는 서비스를 사용하는 하나의 고객(회사·조직)을 말한다.헬스장 회원관리 SaaS를 예로 들면 이런 구조가 된다.회원관리 서비스├── 헬스장 A├── 헬스장 B└── 헬스장 C헬스장 A, B, C가 각각 Tenant다. 모두 같은 프로그램을 쓰지만 서로의 회원 정보는 절대 조회할 수 없다.왜 멀티테넌시를 쓸까?헬스장마다 서버와 DB를 따로 운영한다고 해보자.헬스장 A → 서버 + DB헬스장 B → 서버 + DB헬스장 C → 서버 + DB고객이 늘수록 비용이 폭발한다. 반면 멀티테넌시..
[프로그래머스] 주식가격
·
PS
이 문제는 프로그래머스 LV2에 해당하는 코딩테스트 문제다.'스택/큐'에 대한 개념이 아직 잘 잡혀있지 않아서 나는 문제를 처음 보고 이중for문을 사용하는 방식으로 접근했다.아래 코드는 이중for문을 활용한 방식이다.class Solution { public int[] solution(int[] prices) { int[] arr = new int[prices.length]; for (int i=0; i prices[j]) { break; } } arr[i] = count; } return arr; ..
[프로그래머스] 숫자 문자열과 영단어
·
PS
이런 유형의 문제를 처음 보면 머릿 속에 미리 one, two, three, four... 숫자에 해당하는 영단어를 미리 숫자와 매칭을 시켜놓고 들어가야 되나? for문을 이용해서 반복문을 돌릴 때 반복문 안에서 어떻게 단위(숫자 하나) 별로 자를 수 있지? 어떻게 영어로 된 부분을 숫자로 교체하지? 등등 다양한 고민이 생길 수 있다.나 역시 그랬다. 이 문제는 별거 없다. 그냥 java에서 교체하는 함수 replace만 알고있으면 된다.String 배열에 영단어들을 저장하고 반복문을 10번 돌리면 되는 문제다.반복문이 한 번 돌 때마다 일치하는 것이 있다면 숫자로 대체되게끔 하는 것을 말한다. 내가 범했던 실수가 하나있다.바로 for문 안에 if문을 사용했던 것이다."만약 words에 있다면 교체한다"..
[프로그래머스] 푸드 파이트 대회
·
PS
이 문제는 딱히 중요해 보이진 않았지만 reverse()라는 존재를 잊지 않기 위해 블로그에 남긴다. 사실 나는 reverse()를 사용하지 않았을 뿐더러 불필요한 arr배열까지 만들어서 반복해야 하는 수를 담기 까지 했는데가장 정제된 코드로 reverse()를 사용했을 때와 안 했을 때를 비교해보자. class Solution { public String solution(int[] food) { StringBuilder sb = new StringBuilder(); // 왼쪽 for (int i = 1; i = 1; i--) { for (int j = 0; j 이건 사용하지 않았을 때다. arr을 제거한 대신 범위에 food[i] / 2를 ..
[프로그래머스] 시저 암호
·
PS
이 문제는 프로그래머스 LV1 단계에 해당하는 시저 암호 문제다.복잡한 알고리즘을 요구하는 문제는 아니지만, 문자의 코드값(ASCII/Unicode)과 문자 연산을 이해하는 데 도움이 되는 문제라고 생각해 정리해 보았다. Java의 char는 Unicode를 사용하지만, 영문 알파벳(A~Z, a~z)의 코드값은 ASCII와 동일하다. 따라서 시저 암호와 같은 문제에서는 ASCII 코드의 개념으로 이해해도 무방하다. 문자도 내부적으로는 숫자로 저장되기 때문에 숫자처럼 덧셈과 뺄셈 연산을 할 수 있다.따라서 이 문제는 영문 알파벳이 연속된 코드값을 가진다는 점과, 문자를 숫자처럼 더하고 뺄 수 있다는 점을 이용해 해결할 수 있다. 문자코드'A'를 뺀 결과A650B661C672.........X8823Y892..
[프로그래머스] 이상한 문자 만들기
·
PS
이 문제는 대충 읽고 풀면 나처럼 틀릴 수 있다.나는 처음 풀 때 문제를 대충 읽고 홀수 인덱스는 소문자 짝수 인덱스는 대문자로 하면 되는구나 하고 로직을 만들었다. class Solution { public String solution(String s) { char[] arr = s.toCharArray(); for (int i = 0; i 위에 코드는 내가 처음 잘못 푼 코드다.char 배열을 만들고 반복문을 통해 홀수 인덱스는 소문자로 짝수 인덱스는 대문자로 변경했고 마지막 char 배열을 문제의 요구사항에 맞게 String 형태로 return 했다. 이렇게 문제를 제출하니 꽤 많은 테스트 케이스를 실패했다. 그래서 내가 문제를 읽으면서 놓친 조건이 있나 다시 한 번..
북한산 향로봉 등산일기
·
건강한 나 되기🍀
저번 사패산 등산 이후로 등산의 맛을 알게되어 아버지와 함께 북한산을 오르기로 했다.아버지와 둘이 처음으로 하는 등산이라 설레이는 마음으로 출발했다.진관사에서 시작하여 향로봉으로 올라가는 코스였는데 올라가다보니 길이 사라졌다.뒤로 돌아와 아무리 찾아도 새로운 길도 안 보이고 사람도 보이지 않았다 ㅠㅠ결국 정상까지 오르지 못 하고 하산했다. 내려와서 진관사에 있는 카페에 가서 시원한 커피와 팥빙수를 먹고 근처에 있는 고깃집에 가서 맛있는 소갈비도 먹었다.다음에는 코스를 잘 알아보고 사람이 많은 곳으로 가야겠다 :)
[프로그래머스] 최대공약수와 최소공배수
·
PS
이 문제는 아주 쉬운 기초문제지만 최소공배수를 표현하는 법을 잊지 않기 위해 블로그에 남기기로 했다. 초기 내 코드class Solution { public int[] solution(int n, int m) { int[] arr = new int[2]; if (n % m == 0) { arr[0] = m; arr[1] = n; } else if (m % n == 0) { arr[0] = n; arr[1] = m; } else { for (int i=1; i 최소 공배수를 구하는 코드를 보면 두 수를 최대 공약수로 나눈 값을 저장하는 Nu..