소개
오늘 행한 작은 실천이 주위에 긍정적인 영향을 주길 바라며 지식 공유를 하고 있습니다.
[경력]
(현) 그란데클립 프로덕트 엔지니어
(전) 우아한형제들 백엔드 엔지니어, 우아한테크코스 백엔드 코치, 에코마케팅 데이터엔지니어, 이스트소프트 시스템엔지니어
[교육]
[우아한형제들] 우아한테크코스, SQL을 넘어 제플린으로 등 과정 설계 및 강의 진행
[NEXTSTEP] 인프라공방, 우아한테크캠프 Pro, 카카오 신입사원 교육, 커리어 NEXTSTEP, 챌린지코스 등 과정 설계 및 강의 진행
[리뷰어 활동] NEXTSTEP Clean Code, ATDD, DDD, 라이브러리 & 프레임워크 구현 등
[특강] SSAFY, CATCH
강의
수강평
- 인프라공방 - 그럴듯한 서비스 만들기
- 인프라공방 - 그럴듯한 서비스 만들기
게시글
질문&답변
지하철 노선도 미션 VPC IP 대역 질문
안녕하세요. 질문 확인이 늦었네요~ 미안해요 ㅠㅠ그 사이에 질문주신 부분은 해결되었나 모르겠네요 ㅎ; 답변을 드리자면,맞습니다. VPC에 할당한 CIDR 블록 및 내부에 속한 서브넷 IP 대역 모두 VPC 내에서만 사용하는 프라이빗 IP 주소입니다. 프라이빗 IP 주소로 할당할 수 있는 대역은 아래 링크에서 확인해보실 수 있어요https://en.wikipedia.org/wiki/Private_network맞습니다. Public IP 설정 및 IGW 등의 구성을 통해 인터넷 망과 직접 통신 가능한 구조이기 때문에 관리자가 이해하기 쉽도록 명명해둔 거라고 보시면 되어요. 좀 더 상세히 설명 드리자면, EC2 서버를 생성하면 기본적으로 ENI (Elastic Network Interface)에 private IP가 할당되어요.그런데 만약 Elastic IP 등으로 Public IP를 할당했다면, ENI에 공인 IP를 매핑할 수 있어요. ENI가 가지는 속성은 아래와 같아요https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-interfaces.html{ "NetworkInterfaces": [ { ... "Association": { "PublicIp": "203.0.113.12", "AssociationId": "eipassoc-0fbb766a", "PublicDnsName": "ec2-203-0-113-12.compute-1.amazonaws.com", "IpOwnerId": "123456789012" }, "NetworkInterfaceId": "eni-e5aa89a3", "PrivateIpAddresses": [ { ... "Primary": true, "PrivateIpAddress": "10.0.1.17" Public IP가 할당되었고, Intenet Gateway를 구성하고, 라우팅 테이블에 (local을 제외한) 전체 대역대에 대해서 Internet Gateway로 패킷을 보내라고 설정해둔다면 인터넷 망과 통신이 가능하다고 하여 보통 외부망이라고 부릅니다. 그걸 영문으로 public subnet이라고 가이드했던 것이구요. 참고로 "AWS에서의 망에 대한 짧은 이야기" 강의 중 9:46 경부터 gateway에 대한 설명도 간략히 다루니 참고바래요~ 주말 잘 보내시구요. 학습하시다가 궁금한 점 있으면 언제든 질문 남겨주세요. 감사합니다!(제가 이직한지 얼마 안되어 요새 정신이 없긴 하지만, 확인하는대로 최대한 빨리 답변 남겨둘게요~)
- 1
- 1
- 36
질문&답변
부하테스트 비용 줄이는 방법이 있을까요?
안녕하세요. 인프라공방으로 뵈어 반가워요~아무래도 AWS 인프라로 학습하다보면 비용이 많이 걱정되지요.우선, 제가 인프런 퇴근길 밋업에서 비용에 대해서도 살짝 다뤘던 적이 있으니 영상도 한번 보시면 좋을거 같아요. 그리고 인프랩에서도 비용과 관련해 포스팅한 내용이 있으니 이참에 함께 봐보시는 것도 좋겠어요.그리고 AWS 예상 비용 확인은 https://calculator.aws/#/ 사이트를 활용하시길 권장합니다. 질문하신 부분에 대해 답변드리자면,동일 VPC 내의 서버간 호출하는 방식으로 구성하시면(인터넷 구간을 거치지 않는다면) 트래픽 비용 절감 효과를 얻을 수 있어요. AZ가 같고, EC2 서버간 요청 트래픽만 발생한다면 제가 알기로는 트래픽 비용은 발생하지 않아요. 그리고 강의 내에서 언급했듯, 인터넷 구간에서 발생할 수 있는 latency를 확인할 수 없으니 그런 변수를 시나리오별 시간값(T) 계산시에 반영해주시는 것도 좋습니다. 다만, 상황이 "한국리전에 서버가 있고, 글로벌 서비스를 하고 있다" 등이 아니라면 인터넷 구간에서의 네트워크 비용은 그다지 크지 않긴 해서 무시해주셔도 괜찮습니다.만약 별도의 물리 장비가 있다면, 물리 장비에 부하테스트 도구를 설치하고 테스트를 진행하셔도 괜찮습니다.트래픽 비용보단, EC2 비용이 많이 발생할텐데요. 테스트하지 않을 때는 서버를 종료하거나, 적어도 중지만이라도 해두는게 좋습니다. (중지하더라도 EBS Volume 비용이 발생할 수 있고, Elastic IP를 제거하지 않았다면 IP 비용도 (아주 작지만) 발생할 수 있어요.)그리고 로컬 테스트 환경을 어떻게 구성하셨는지는 모르겠지만,만약 부하테스트 서버와 대상 서버를 하나의 노트북 장비에 구성하고 테스트한다면 그다지 의미가 없다고 생각해요. 같은 장비의 CPU, Memory 등의 리소스를 사용하고 있어 서로 영향을 주기 때문이지요.혹시 추가로 궁금한 점 있으시면 답변 남겨주세요.연휴 잘 보내세요~
- 0
- 2
- 177
질문&답변
섹션1과 섹션2의 연계성 관련 질문
안녕하세요~ 섹션 1은 과정을 소개하기 위함이니, 섹션2를 먼저 들으셔도 좋습니다. 다만, 질문주신 부분과 관련해서는리눅스 서버 구조에 대해서는 섹션 3. 내. 리눅스 서버 들여다보기 쪽에서,그리고 metric에 대해서는 섹션 3. 내 리눅스 서버 진단하기 쪽에서 좀 더 깊게 다루고 있어요. 혹시 섹션 3.를 듣고 섹션 2를 들어도 되는지에 대한 질문이었다면,이 역시 괜찮습니다. 각 강의들은 미션과 유기적으로 연결되어 있어서 순차적으로 들었을 때 시너지가 나지만,강의 자체로는 독립적이어서 필요한 부분만 발췌해서 들으시더라도 어색함이 느껴지진 않을거라 생각합니다.
- 0
- 1
- 60
질문&답변
aws 비용관련 문의
안녕하세요. EC2 의 경우, 인스턴스를 종료하셔야 비용이 나오지 않습니다.EC2 인스턴스를 중지하면 Computing 비용은 과금되지 않지만, EBS Volme 비용이나, EIP를 할당했을 경우 IP 비용 등이 과금되어요. 그 외 인프라공방 과정 내에서 가이드하는 설정 (vpc, subnet, route table, security group) 과 같은 부분은 과금되지 않는다고 알고 있어요.과금 정책은 종종 바뀌기 때문에 (가령, 예전에는 EC2 한대당 공인 IP 한개는 무료였는데, 올해 초부터 과금되도록 변경되었어요) 저도 모두 알고 있는건 아니라서요.https://calculator.aws/#/ 로 사전에 확인해보실 수 있고, 그게 아니더라도 aws cost explorer 같은 지면에서 어느 부분에서 과금되는지 체크해볼 수 있어요.추가적으로, 실습할 때 자신도 모르게 다른 리전에서 했다가 안지워서 과금되는 경우도 종종 보았어요.처음 들어가보면 버지니아 같은 미국 쪽 리전으로 세팅되어 있는 경우도 있는데요. 그런 부분이 있는지도 함께 체크해보세요.감사합니다. 혹시 그럼에도 해결되지 않는다면, 연락주시면 줌으로 함께 봐도 좋을거 같아요~좋은 하루 보내세요~
- 0
- 1
- 106
질문&답변
validbit
성훈님 안녕하세요~ 문의주신대로 valid bit 1은 메모리에 페이지가 존재합니다~제가 설명을 반대로했군요~ 강의 내용을 수정해둘게요. 제보해주셔서 감사합니다!
- 2
- 2
- 95
질문&답변
가이드 페이지 우피 이용 만료되신 것 같아요!
감사합니다~ 카드 교체하면서 과금이 안되었었네요.
- 0
- 1
- 124
질문&답변
지하철 노선도, 설문 조사 코드
안녕하세요. 인프라공방을 통해 뵙게 되어 반가워요지하철 노선도 미션 요구사항은 https://www.brainbackdoor.com/infra-workshop/subway-requirements,컨퍼런스 신청 플랫폼 요구사항은 https://www.brainbackdoor.com/infra-workshop/conference-requirements 에서 확인하실 수 있어요.미션 요구사항을 준수하는 내에서 어떤 서버에 배포를 할지, 리버스프록시는 어디에 구성할지는 자율입니다.가령, 하나의 서버에 리버스프록시와 WAS를 구성할 수도 있고, 나눠서 구성할 수도 있고, 리버스프록시 역할과 로드밸런서 역할의 서버를 별도로 구성해도 좋습니다. 각각의 케이스에 어떤 장/단점이 있을지 고민해가는 과정도 성장에 도움이 될거라 생각해요. (현업에서 업무하는 방식이 늘 이렇습니다. 무엇이 합리적인지 고민해가는게 익숙해져야 할거에요.) 혹시 그럼에도 확신이 잘 안선다면 가장 심플하게 구성해보고, 불편함을 느끼거나 요구사항이 바뀌거나 상황이 바뀌었을 때 점진적으로 바꿔나가는 것도 좋다고 생각해요. 추가적으로 궁금한 점이 있으시다면 답변 부탁드려요~주말 잘 보내세요! 🙏🏻
- 0
- 2
- 160
질문&답변
안녕하세요. BFF 사용 이유 관련되서 질문이 있습니다.
안녕하세요. NEXTSTEP에서 뵈었다면, 이런저런 이야기를 직접 나눌 수 있었는데, 인강은 이런 부분이 좀 아쉽긴 한거 같아요.우선, 첫번째 질문은 BFF 패턴의 이점으로 보이는데요."트래픽 대응, 크롤링, 시스템 점검과 같은 클라이언트 접근 제어와 관련된 정책을 한곳에서 관리 가능 및 보안성 수준 제공 가능"즉, 클라이언트와 연결을 수립하는 역할을 가장 앞단의 서버(예제 코드로는 front 모듈)가 수행합니다.이에 트래픽 대응, 크롤링 대응, 시스템 점검과 같은 책임이 부여되는데요.이 때 크롤링은 front 모듈에서 수행하는 것이 아니라, 외부의 악의적인 의도를 가진 유저가 우리 시스템으로 수행하는 것을 의미해요. (지금 보니, 크롤링 "대응"이라고 표현했으면 헷갈리지 않으셨을거 같단 생각도 드네요 😅) Public Call이 edge server인 front 모듈만 가능하니 그 서버에만 크롤링이 가능한 것이죠.여기서 악의적인 의도란, 시스템의 입장에서 의미예요. 가령, 홈택스 서비스 입장에선 크롤링이 의도치 않은 요청이지만, 크롤링해서 웹 컴포넌트를 이해하고 자동으로 로그인 후 여러 복잡한 세무처리를 해주는 서비스가 있다면 사용자 입장에선 그저 편리한 서비스일 수 있죠. 그래서 원천 데이터를 가진 서비스와 크롤링해서 서비스를 제공하는 업체간에 여러 공격과 방어가 이뤄지기도 하고, 경우에 따라선 정식으로 계약하고 (지금 예시에선 세무처리 서비스를 위한) 별도 API를 제공하기도 합니다. 이럴 때는 업체에 인증키를 전달하거나 해당 서비스 대역 IP만을 허용하는 형태로 구성합니다. (두가지 방법 모두 장,단점이 있을텐데요. 어떤게 있을지 한번 고민해보셔도 좋을거 같아요 😅) 두번째 질문은 내부적으로 사용하는 API와 public call을 위한 api 역할을 하는 모듈이 무엇인가로 보이는데요. 둘 다 예시 기준으로, conference, analysis 모듈입니다. (글을 다시 읽다보니.. Public Call이란 인터넷망에서 우리 시스템으로 들어오는 요청이라고 이해하시면 되어요.)예를 들어, GET /conferences/{id} 이란 요청이 있고 그 응답값으로 id, 컨퍼런스 이름, 일정, 작성자, 컨퍼런스 장소, 컨퍼런스 내용, 컨퍼런스 타입, 컨퍼런스 등급, 작성시간, 수정시간 등이 포함되어 있다고 가정해볼게요. 그리고 실제 웹 페이지에서는 컨퍼런스 타입, 컨퍼런스 등급, 작성시간이나 수정시간이 사용되지 않을 경우, 이를 응답으로 내려줄 필요는 없을거에요. 하지만 내부의 다른 시스템에선 이 정보들이 필요할 수 있죠. 가령 batch에서 컨퍼런스 타입이나 등급에 따라 일괄적으로 알림을 보내는 기능이 있다던가, 최종 수정시간 기준으로 2년이 지난 컨퍼런스 정보는 아카이빙 한다던가 하는 규칙이 있을수도 있을거에요.이에 front 모듈이 없다면, conference 모듈에선 Public Call을 위한 API와 내부적으로 사용하는 API를 나눠서 구성하게 되니 유지보수 비용도 커지고, 그럼 사람이 하는 일이다보니 휴먼에러가 발생할 수 있다는 의미였어요. 혹시 답변이 되었을까요? 추가로 궁금한 점이 있다면 답변 남겨주세요~좋은 밤 보내세요.
- 0
- 1
- 201
질문&답변
포트, http 체크 질문
안녕하세요. 인프라공방으로 만나뵈어 반가워요간단하게 설명하자면 아래와 같다고 보시면 되어요.ping 명령어 : ping 체크telnet 명령어 : port 체크curl 명령어 혹은 브라우저로 확인(크롬개발자도구 등) : http 체크
- 0
- 2
- 170
질문&답변
질문이 있습니다.
안녕하세요! 미션 즐겨주셔서 감사합니다~제가 질문 확인이 좀 늦었네요 ㅠㅠ Thread 실습 : 네, 말씀하신대로 여러 방법이 있을텐데요. 여기서 전달하고자 했던 메시지는 강의 때 언급드렸듯, Thread safe 하지 않은 상황에서 멀티쓰레드로 동작할 때 상태변수를 두지 않아야 한다는 점이었어요. 가령, List를 속성으로 가지고 있는 UserRepository 객체가 존재하고, 같은 이름의 User는 존재하지 않는다와 같은 불변식을 세우면 어떨까요? 그렇다면 UserRepository를 통해 User를 추가할 때 User가 존재하는지를 확인해보므로, 이 테스트 케이스에 대한 해결책은 될거에요. 에러코드나 에러가 발생한 화면을 봐야 좀 더 정확히 답변드릴 수 있을거 같은데요. 경험상 letsencrypt를 사용하고 웹 서버를 띄운 후, 웹페이지에 접근했을 때 경고가 뜬다면 인증시 사용했던 URL과 접근 URL이 다를 수 있어요. 가령, '*.brainbackdoor.com' 혹은 'brainbackdoor.com'으로 인증받은 후, 'www.brainbackdoor.com' 으로 접근하려고 할 때 경고가 뜹니다. 혹시 추가로 궁금한 점이 있다면 또 문의남겨주세요. 좋은 하루 보내세요~
- 0
- 2
- 253