오늘은 인스턴스 그룹을 만들어서 오토 스케일링이 되도록 하고, 그 그룹을 부하 분산 장치와 연결시키는 과정을 진행하였다.
앞서 겪었던 클라우드들의 생성 방식과 크게 다르지 않아 문제 없이 생성했다.
GCP는 Azure보다 확실히 속도가 느린 게 체감이 된다. 이유는 모르겠다...
UI나 구성 방식은 이제까지 중에서 제일 마음에 들고 오히려 Azure보다도 레퍼런스가 더 많은 것 같은데, 포트를 만들 때 Azure는 대표적인 것들은 자동으로 넣어주는 반면에 GCP는 하나하나 넣어줘야 한다.
그리고 백엔드 풀 포트를 80과 5000을 열어뒀는데 상태 확인을 80번으로 하니까 페이지가 안 뜨고 5000번으로 하니까 떴다. 포트 두 개를 열어둬서 그런가...
https는 보안 면에서 http보다 더 뛰어나고 검색이 잘 되는데 SSL인증서를 발급받아야 하고 생성 직후 30분 정도 이후에나 연결이 된다고 한다.
기존 강의보다 좀 더 자세한 공부가 필요하다고 생각되어 오늘은 이리저리 찾아봤다.
이것저것 듣다가 아무래도 책 하나를 잡고 N회독하는 게 좋겠다 싶어서 대충 스케쥴을 짜보기로 했다.
JAVA문법 뽀개기에서 객체지향 퀴즈(자식,부모,조부모 문제)에서 왜 자손 클래스로 만드는 인스턴스 타입을 부모 클래스로 지정하는지 이해하기 어려웠다. 애초에 다형성이라는 용어 자체도 몰랐기에 부모 클래스 할당 어쩌구 검색했던 것 같다.
다형성은 안전성을 높여주고(멤버 변수가 부모 클래스로 한정되어지니까.) 자손 클래스의 참조 변수도 부모 클래스 내 메소드의 매개 변수로 할당받을 수 있게 해준다.
아래는 오늘 배웠던 것 중에 인상 깊었던 재귀 메소드이다.
return되는 위치를 익히기 좋은 것 같다.
public static void recursionMethod(int n) {
System.out.println("Call!! n: "+n);
if (n==0) {
return;
}
recursionMethod(n-1);
System.out.println("returned n: "+n);
}
public static void main(String[] args) {
recursionMethod(4);
}
이번엔 JAVA로 구현하는 테스트였다. 메인 함수를 건드리지 않고 함수를 만들고 예외 처리를 하는 문제였다.
chatAt()과 indexOf() 함수를 써서 숫자 야구를 구현하는 것이었다.
사실 함수 자체는 함수들의 쓰임새를 이해하기만 하면 만들기 어렵지 않았다.
그러나 try-catch문에 예외 조건을 넣으려면 어떻게 해야하는지 모르겠어서 헤맸다.
처음엔 if문으로 다 써서 걸렀다가 이건 좀 아닌 것 같아서 그냥 아예 쓰지 않고 제출했다.
제출 이후 답안 코드를 보지 않고 검색을 통해 알아내려고 했다.
throw new Exception(msg)를 쓰면 메인 함수에서 try-catch문으로 잡아내는 에러에 포함시킬 수 있는 걸 깨달았다.
코드를 잘 짜는 것도 중요하지만 에러 처리를 하는 것도 중요하기에 이 부분도 제대로 익혀둬야겠다.
아래는 내가 짠 예외 코드
// 문자열 길이가 4가 아닐 때
if (number.length() != 4) throw new Exception("Invalid input(length 4). The opportunity passes to the next team.");
// 숫자로만 이루어져 있지 않을 때
for (int i = 0; i < number.length(); i++) {
if (!Character.isDigit(number.charAt(i)))
throw new Exception("Invalid input(Only Numeric). The opportunity passes to the next team.");
}
// 같은 문자가 있을 경우
for (int i = 0; i < number.length(); i++) {
for (int j = 1; j < number.length(); j++) {
if (number.charAt(i) == number.charAt(j))
throw new Exception("Invalid input(same number). The opportunity passes to the next team.");
}
}