소개
오늘 행한 작은 실천이 주위에 긍정적인 영향을 주길 바라며 지식 공유를 하고 있습니다.
[경력]
(현) 우아한형제들 백엔드 엔지니어
(전) 우아한테크코스 백엔드 코치, 에코마케팅 데이터엔지니어, 이스트소프트 시스템엔지니어
[교육]
[우아한형제들] 우아한테크코스, SQL을 넘어 제플린으로 등 과정 설계 및 강의 진행
[NEXTSTEP] 인프라공방, 우아한테크캠프 Pro, 카카오 신입사원 교육, 커리어 NEXTSTEP, 챌린지코스 등 과정 설계 및 강의 진행
[리뷰어 활동] NEXTSTEP Clean Code, ATDD, DDD, 라이브러리 & 프레임워크 구현 등
[특강] SSAFY, CATCH
강의
전체1수강평
- 너무좋아요.. 나만듣고싶다
dncjf64
2024.07.16
1
게시글
질문&답변
2024.06.26
가이드 페이지 우피 이용 만료되신 것 같아요!
감사합니다~ 카드 교체하면서 과금이 안되었었네요.
- 0
- 1
- 76
질문&답변
2024.06.15
지하철 노선도, 설문 조사 코드
안녕하세요. 인프라공방을 통해 뵙게 되어 반가워요 지하철 노선도 미션 요구사항은 https://www.brainbackdoor.com/infra-workshop/subway-requirements , 컨퍼런스 신청 플랫폼 요구사항은 https://www.brainbackdoor.com/infra-workshop/conference-requirements 에서 확인하실 수 있어요. 미션 요구사항을 준수하는 내에서 어떤 서버에 배포를 할지, 리버스프록시는 어디에 구성할지는 자율입니다. 가령, 하나의 서버에 리버스프록시와 WAS를 구성할 수도 있고, 나눠서 구성할 수도 있고, 리버스프록시 역할과 로드밸런서 역할의 서버를 별도로 구성해도 좋습니다. 각각의 케이스에 어떤 장/단점이 있을지 고민해가는 과정도 성장에 도움이 될거라 생각해요. (현업에서 업무하는 방식이 늘 이렇습니다. 무엇이 합리적인지 고민해가는게 익숙해져야 할거에요.) 혹시 그럼에도 확신이 잘 안선다면 가장 심플하게 구성해보고, 불편함을 느끼거나 요구사항이 바뀌거나 상황이 바뀌었을 때 점진적으로 바꿔나가는 것도 좋다고 생각해요. 추가적으로 궁금한 점이 있으시다면 답변 부탁드려요~ 주말 잘 보내세요! 🙏🏻
- 0
- 2
- 102
질문&답변
2024.06.12
안녕하세요. 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
- 107
질문&답변
2024.06.07
포트, http 체크 질문
안녕하세요. 인프라공방으로 만나뵈어 반가워요 간단하게 설명하자면 아래와 같다고 보시면 되어요. ping 명령어 : ping 체크 telnet 명령어 : port 체크 curl 명령어 혹은 브라우저로 확인(크롬개발자도구 등) : http 체크
- 0
- 2
- 117
질문&답변
2024.04.22
질문이 있습니다.
안녕하세요! 미션 즐겨주셔서 감사합니다~ 제가 질문 확인이 좀 늦었네요 ㅠㅠ Thread 실습 : 네, 말씀하신대로 여러 방법이 있을텐데요. 여기서 전달하고자 했던 메시지는 강의 때 언급드렸듯, Thread safe 하지 않은 상황에서 멀티쓰레드로 동작할 때 상태변수를 두지 않아야 한다는 점이었어요. 가령, List 를 속성으로 가지고 있는 UserRepository 객체가 존재하고, 같은 이름의 User는 존재하지 않는다와 같은 불변식을 세우면 어떨까요? 그렇다면 UserRepository를 통해 User를 추가할 때 User가 존재하는지를 확인해보므로, 이 테스트 케이스에 대한 해결책은 될거에요. 에러코드나 에러가 발생한 화면을 봐야 좀 더 정확히 답변드릴 수 있을거 같은데요. 경험상 letsencrypt를 사용하고 웹 서버를 띄운 후, 웹페이지에 접근했을 때 경고가 뜬다면 인증시 사용했던 URL과 접근 URL이 다를 수 있어요. 가령, '*. brainbackdoor.com ' 혹은 ' brainbackdoor.com '으로 인증받은 후, ' www.brainbackdoor.com ' 으로 접근하려고 할 때 경고가 뜹니다. 혹시 추가로 궁금한 점이 있다면 또 문의남겨주세요. 좋은 하루 보내세요~
- 0
- 2
- 212