2020/10 18

AWS 시작 템플릿 (Launch Template) 옵션 하나하나 살펴보기

안녕하세요~ 여러분 공부하는~개발자 입니다 ㅎㅎㅎ 오늘은 바로바로 에 대해서 집중적으로 알아보려 합니다. 이전 포스팅에서 Auto Scaling 그룹 만들때 필요했었는데 뭔가 이것저것 하다보니 그냥 되었죠 ㅋㅋㅋㅋ 그래서 이번 포스팅에서는 조금 더 디테일하게 까보려고 합니다 AWS 공식 문서와 만들어진 실행그룹을 보며 각 설정이 하나하나 어떤 뜻인지 들이파 보겠습니다. 우선 공식문서부터 바로바로 가보시죠~ 공식 문서 정리 우선 시작 템플릿이란 EC2 인스턴스 시작에 필요한 구성 정보를 모아둔 template 입니다. 이 시작 템플릿에는 버전이 있는데요 마치 저희가 코드 살짝 바꾸고 버전 올려서 배포하는 것과 비슷하다고 생각하시면 됩니다. 1 버전에서는 t2.small이었던 인스턴스 유형이 2버전에서 t2..

리액트 훅(React Hook) 정리

와 내가 react 배울때만 해도 hook이라는게 하나도 없었는데 (생각해보면 거의 2.5~3년 전이긴 하네...) 이제는 자료를 찾아봐도 hook 사용이 default가 된 것 같다... 사이드 프로젝트를 해볼까 하여 훅을 간단히 정리해 보았다. 훅 정리 리액트 버전 16.8에 추가되었으며, 함수형 컴포넌트에도 클래스형 컴포넌트의 기능을 사용할 수 있게 하는 기능이다. 새로 시작하는 프로젝트라면 클래스형 컴포넌트는 지양하고 훅을 사용하는 것이 좋다. useState : state 관리 function App() { // useState(초기값)으로 [state이름, setter]를 가져온다 // state에 객체가 들어갈 수도 있음 const [number, setNumber] = useState(0)..

짧은 코멘트와 함께하는 이펙티브 자바) #19 상속을 고려해 설계하고 문서화하라. 그러지 않았다면 상속을 금지하라

짧은코멘트 Spring 애플리케이션 개발자가 상속을 할 일은 생각보다 많지 않다. 중복되는 필드가 있는 경우 데이터 구조를 표현하기 위한 정도...? 요즘에는 IDE가 원낙 잘 되어 있어 프로젝트에서 사용하는 모든 클래스에 final을 붙일 필요까지는 없는 것 같다. 같은 팀끼리는 의사소통이 잘 되는 측면도 있고... 몇몇 유틸성 클래스에 private constructor를 잘 달아주는 정도면 충분할 것 같다. 상속을 고려한 설계와 문서화 상속용 클래스를 설계하기란 결코 만만치 않다. 상속용 클래스를 만들려면 클래스 내부에서 스스로를 어떻게 사용하는지 (자기 사용 패턴) 모두 문서로 남겨야 한다. 이때 @implSpec 태그를 사용할 수 있다. 상속과 관련되어 문서화한 것은 그 클래스가 사용되는한 반드..

자바 동시성 자료 조사

문득 자바 Thread에 대하여 깊이 있게 알고 싶다는 생각이 들었다. Thread와 관련하여, 가지고 있는 Java 관련 책들이나 JDK docs를 읽으며 간단히 정리해보았다. 혼자 공부하는 자바 스레드가 사용중인 다른 객체를 다른 스레드가 변경할 수 없게 하려면 스레드 작업이 끝날 때까지 객체에 잠금을 걸어서 다른 스레드가 사용할 수 없도록 해야 한다. 임계 영역 : 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역 자바는 임계 영역을 지정하기 위해 동기화 메소드를 제공한다. public synchronized void method() { // 임계 영역 : 단 하나의 스레드만 실행 } 동기화 메소드는 메소드 전체 내용이 임계 영역이므로 스레드가 동기화 메소드를 실행하는 즉시 객..

짧은 코멘트와 함께하는 이펙티브 자바) #18 상속보다는 컴포지션을 사용하라

짧은코멘트 회사 블로그에 기고한 글에서도 살짝 이야기 했지만 상속보다는 합성을 사용하는 것이 훨씬 수월하다. 합성에 익숙해지면 어느덧 extends 보다 implements를 선호하게 될 것이다. 상속보다는 합성을 사용하라 일반적인 구체 클래스를 패키지 경계를 넘어 상속하는 일은 위험하다. 메소드 호출과 달리 상속은 캡슐화를 깨뜨린다. 상위 메소드를 부를때 자기 사용 여부에 따라 의도와 다르게 동작할 수 있다. (자기 사용 : 한 클래스의 퍼블릭 인터페이스에서 같은 클래스 내 다른 퍼블릭 인터페이스를 사용하여 기능을 완성한 것) 또한, 상위 클래스의 한 메소드가 상위 클래스의 다른 메소드를 사용하는 자기 사용 여부는 내부 구현 방식에 해당되기 때문에 다음 릴리스에서 유지될지 알 수 없다. 다음 릴리스에서..

AWS Auto Scaling 구축하기

안녕하세요! 여러분 공부하는~개발자입니다 ^^ 이번 시리즈에서는 EC2 AutoScaling 구축을 해보려고 합니다. AWS를 사용하는 많은 운영 환경에서는 하나의 EC2 인스턴스가 아닌 여러 인스턴스를 사용하는데요, 트래픽이 갑작스럽게 몰리거나 특정 시간에 많은 인스턴스가 필요한 경우에 자동으로 대응하기 위해서입니다. 사람이 24시간 수동으로 대응할 수는 없으니까요!! 자 그럼, 이번 시리즈에서는 EC2 Auto Scaling 그룹을 만들어 간단한 Nginx + WAS만을 두고, 해당 WAS에 트래픽을 높여 새로운 인스턴스가 자동으로 생긴 후 트래픽이 분산되는지 테스트 해보도록 하겠습니다 ㅎㅎ 이번 포스팅에서는 우선 Auto Scaling 그룹을 만들어 CPU 사용량에 따라 자동 scale out이 되..

짧은 코멘트와 함께하는 이펙티브 자바) #17 변경 가능성을 최소화하라 (불변객체)

짧은코멘트 아래에 언급된 장점들로 인해 불변 객체는 정말 자주 사용되며 final 키워드에 대해서는 잘 알아두면 좋다. class나 method에서도 간혹 사용할 일이 있기 때문이다. 불변 객체의 연산을 예측하는 것 뿐만 아니라 객체 생성이 제한적이라면 내부에 캐싱해두는 것도 성능상 괜찮은 방법이다. 특히 Enum은 자연스럽게 불변 객체가 되는데 name이나 특정 key를 사용해 Enum 찾을 일이 많다면 캐싱이 권장된다. 변경 가능성을 최소화하라 불변 클래스란 그 인스턴스의 내부 값을 수정할 수 없는 클래스이다. 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전하다. 불변 클래스는 다섯 가지 규칙을 따라야 한다. 객체의 상태를 변경하는 메소드를 제공하..

[짧은 서평] 정부가 집 값을 안 잡는 이유

완독일 : 2020-10-09 / 평점 : 5.0 노션에 비개발서적 독서 목록을 기록해 오기 시작한 2020년 6월 17일부터 총 23권의 책을 읽었는데, 평점이 5.0을 달성한 책은 딱 2권 있었다. 이번에 세 번째 완독했던 그리고 이번에 읽은 내가 정말 좋아하는 사람이라면 이렇게 말해 줄 것이다. "야 이 책 꼭 봐라. 인터넷에 퍼져 있는거 있으니 돈 아끼기 위해 그거 읽어도 되니까 제발 읽어라. 안 그러면 니 10년후에 월급의 60%를 월세에 쓸 수도 있다. 이 상황을 타파할 해결책을 주는 것은 아니지만 이 상황을 정면으로 볼 수 있게 해준다. 일단 알아야 머리를 굴려서 생존하지 않겠냐" 내가 좋아하지 않는 사람이라면 이렇게 말해 줄 것이다. "그 책 안봐도 되요 ^^ 집 값 꼭 잡힐거에요 ^^"

짧은 코멘트와 함께하는 이펙티브 자바) #16 public 클래스에서는 public 필드가 아닌 접근자 메소드를 사용하라

짧은 코멘트 Effective JAVA에서 가장 짧은 파트가 아닌가 싶다 ㅎㅎ public 클래스에서는 public 필드가 아닌 접근자 메소드를 사용하라 패키지 바깥에서 접근할 수 있는 클래스라면 접근자를 제공해라 package-private 클래스 혹은 private 중첩 클래스라면 데이터 필드를 노출한다 해도 하등의 문제가 없다.

짧은 코멘트와 함께하는 이펙티브 자바) #15 클래스와 멤버의 접근 권한을 최소화하라

짧은 코멘트 클래스와 메소드, 그리고 필드의 접근 권한을 적절히 설정하는 일은 단순히 접근할 수 있다 / 없다 뿐 아니라, 코드를 읽는 사람 입장에서, '이 필드는 밖에서도 사용되나?' / '이 코드는 내부에서만 사용되구나'를 유추할 수 있게 해주는 수단이다. 때문에 clean code에 있어 기초적이면서도 중요하다고 생각한다. 가끔 단위 테스트를 작성하기 위해 private method를 public method로 만드는 분들이 계시는데, 그 보다 나은 방법은 default 접근 권한을 사용하는 것이다. 그리고 그 보다 조금 더 나은 방법은 테스트 해야할 부분과 테스트를 해야하지 않을 부분을 명확히 구분하여 외부로 하여금 내부를 테스트 하게 하는 것이다. (lannstark.tistory.com/105..