반응형

분류 전체보기 136

수포자 디자이너에서 카카오 서버 개발자가 되기까지 - 카카오 엔터프라이즈 합격후기

그제 오후 두 달 간의 길고 긴 채용 프로세스를 끝으로 카카오 엔터프라이즈에 (지난 12월에 분사한 카카오 AI계열사) AI 검색 플랫폼 지식 그래프 서버 개발자로 상시 채용 전형에 최종 합격 오퍼를 받았다. 사실 이 글을 쓰는 지금도 실감이 잘 나지 않지만, 그간의 회고 겸 이 글을 읽는 사람들의 방향성에 조금이라도 도움이 되길 바라는 마음에 오랜만에 ‘나의 이야기’를 담은 글을 적어보려 한다. 채용 과정 지원 먼저 사람들이 가장 궁금해할 만한 채용 프로세스에 대해서 이야기해볼까 한다. 앞서 이야기했던 대로 나는 상시채용 전형으로 지원했고, 프로그래머스 DevMatching을 통해서 지원했다. (프로그래머스로 지원해서 합격할 경우 50만원 상당의 샤이닝 보너스를 받을 수 있다.) 채용 프로세스는 코딩 ..

Forum/Retrospect 2020.06.15

[Spring] Bean Scope와 Bean Life Cycle

스프링에서는 Bean으로 지정된 객체는 기본적으로 싱글톤 객체로 관리하게 됩니다. 하지만 요구사항에 따라 싱글톤이 아닌 방법으로 빈을 구성해야 하는 경우가 있는데, 이와 같은 경우를 명시적으로 구분하기 위해 스프링에서는 scope라는 키워드를 사용합니다. 빈 스코프 Spring에서 별도의 설정을 하지 않을 경우 default bean scope는 singleton으로 구성됩니다. singleton : 스프링 default bean scope prototype : 애플리케이션 요청시 ( getBean() 메서드가 호출될 때마다) 스프링이 새 인스턴스를 생성합니다. request : HTTP 요청별로 인스턴스화 되며 요청이 끝나면 소멸됩니다. session : HTTP 세션별로 인스턴스화 되며 세션이 끝나면..

[Teah] Load Balancer(로드 밸런서)

로드 밸런서 4차 산업혁명 시대가 되고 인터넷을 통해 거의 모든 작업들이 처리되고 있습니다. 웹툰부터 시작해서 페이스북 좋아요나 유튜브 스트리밍까지 모든 전자기기가 인터넷을 이용해 통신하고 있습니다. 그로 인해 하나의 서버가 모든 트래픽의 부하를 감당하지 못하는 상황이 오게 됩니다. 이에 따라 분산 시스템을 구축하게 되는데, 쉽게 말해 같은 작업을 하는 여러대의 서버를 띄워서 트래픽을 여러 대의 서버가 분산해서 처리하게 되는 형태입니다. 이때 클라이언트의 요청을 이로간성있게 여러 대의 서버로 분산시켜주는 기술을 바로 로드 밸선싱이라고 합니다. 로드 밸런서는 서버에 가해지는 부하를 분산해주는 장치 또는 기술을 통칭하는 단어로서 클라이언트와 서버 사이에서 한 대의 서버에 부하가 집중되지 않도록 트래픽을 관리..

[Typescript] Typescript는 private을 js로 어떻게 구현할까? feat. 클로저

저는 요즘 Typescript의 매력에 빠져있습니다. 3월 11일에 페이스북에 타입스크립트 왜 쓰는지 모르겠다고 독설을 늘여놓았다가 1달 만에 우디르급 태세 전환을 했거든요ㅋㅋㅋ 밑에 이미지에서도 TMI로 구구절절 언급하고 있지만, JS의 가벼움을 그대로 가지면서도 트랜스파일링 시점에 에러를 잡아내 주는 이 녀석은 정말 물건입니다. bbb 그런데 문득 친구가 오늘 JS로 클로저 공부를 했다는 이야기를 듣고 뜻밖의 궁금증이 떠올랐습니다. TS는 private을 어떻게 구현할까? 처음 JS 책에서 클로저에 대해 공부할 때가 생각납니다. 대체 이놈은 왜 있는거지? 라는 생각이 들었고, 시간이 지남에 따라 private을 따로 지원하지 않는 javascript에서 정보은닉을 구현하기 위해 사용하지 않을까?라는 ..

[Network] Port와 포트 포워딩(Port-Forwarding)이란?

Port란 예를 들어 하나의 서버가 있을 때 이 서버는 다양한 역학을 하게 되는 경우가 있습니다. 웹사이트를 전달해주는 역할, 그리고 파일을 요청하는 역할이 있다고 해보겠습니다. 이럴 경우 클라이언트가 서버에 요청을 보냈을 때, 웹사이트 요청인지 파일 요청인지 구분할 수 있는 방법이 필요하게 됩니다. 이때 바로 Port를 사용하게 됩니다. 포트는 숫자로 표현하게 되어 있으며 65535번까지 존재하며 아래와 같이 3종류로 표현이 됩니다. 0번 ~ 1023번: 잘 알려진 포트 (well-known port) 1024번 ~ 49151번: 등록된 포트 (registered port) 49152번 ~ 65535번: 동적 포트 (dynamic port) 잘 알려진 포트 번호의 대표적 예는 다음과 같습니다. 20 :..

[Network] CORS(Cross-Origin Resource Sharing)란?

CORS란? CORS란 Cross-Origin Resource Sharing의 약자로 번역하면 교차 출처 리소스 공유라는 뜻이다. 기본적으로 클라이언트에서 서버로 요청을 보낼 때, 클라이언트와 서버의 도메인이 일치하지 않으면 요청이 차단됩니다. 예를들어 localhost:8000번 클라이언트에서 localhost:8080 서버로 요청을 보내면 서버는 다른 포트 즉 다른 도메인에서 연결이 왔기 때문에 요청을 차단하게 됩니다. 이러한 요청이 왔을 때 구글 크롬 탭을 열어보면 아래와 같이 Access-Control-Allow-Origin 헤더가 없다는 에러가 뜨게 됩니다. CORS 문제를 해결하기 위해서는 응답헤더에 Access-Control-Allow-Origin이라는 헤더를 넣어주어야 합니다. 이 헤더는 ..

[Spring] iBatis/MyBatis: 쿼리 return결과

이번에 외주 개발로 어쩌다보니 sql mapper로 iBastis를 사용하게 되었는데, 개발 툴이 이클리스라(정말 쓰고 싶지 않았다) 자동완성도 대부분 지원되지 않을 뿐더러, 쿼리 결과를 매번 기억하고 예측하기 힘들어 자료를 찾던 중 좋은 레퍼런스가 있어서 참고하여 정리해 둡니다. 표에서 알 수 있듯이 iBatis 또는 Mybatis로 쿼리를 매핑할 경우, 해당 쿼리에 따른 리턴 결과가 다른데, 이를 이용해 예외처리나 비즈니스 로직 개발에 활용할 수 있습니다. iBatis MyBatis SELECT SELECT문의 결과를 리턴 SELECT문의 결과를 리턴 INSERT NULL 1 (다중 INSERT도 같음) UPDATE 1 UPDATE된 행의 개수를 리턴 (없으면 0) DELETE DELETE된 행의 개..

[Spring] Spring MVC: Controller return 타입

이번 포스팅에서는 spring controller의 리턴 타입에 대해서 살펴보도록 하겠습니다. 처음 스프링 부트를 배우기 시작했을 때 @RestController 애노테이션을 사용했기 때문에 줄곧 json 타입으로 return을 해왔는데, 우연히 외주 프로젝트를 하며 다른 리턴 타입들을 알게 되었고, @RestController가 어떤 애노테이션인지와 MVC에 대한 이해를 좀 키울 수 있었습니다. String Spring + View template을 사용할 때 흔히 사용하는 타입입니다. @GetMapping("/test") public String test(Model model) { model.addAttribute("data", data); return "/test/data"; } Model 안에 데..

[Spring] Spring 4.3: @RequestMapping, @GetMapping, @PostMapping

Spring 4.3부터 Spring MVC 컨트롤러 메서드 새로운 애노테이션이 5가지 추가되었습니다. 이전에는 @RequestMapping 애노테이션 하나만을 사용하여 method를 바꿔주는 형태로 http method를 매핑했었습니다. @RequestMapping(value="/test", method=RequestMethod.GET) 코드의 길이가 길어지고 직관적으로 어떤 HttpMethod인지 알 수 없어 불편했는데, 새롭게 추가된 애노테이션을 사용하면 좀 더 직관적으로 코드를 작성할 수 있습니다. 아래는 새롭게 추가된 애노테이션입니다. @GetMapping("/test") @PostMapping("/test") @PutMapping("/test") @DeleteMapping("/test") @Pa..

[Spring] Spring MVC: Controller에서 parameter를 받아오는 방법

Spring Controller에서 데이터를 받아오는 방법에 대해서 살펴보겠습니다. httpServletRequest.getParameter() @RequestMapping("/test") public String test(HttpServletRequest req) { String userId = req.getParameter("userId"); return "test"; } getParameter()는 String 값을 반환합니다. httpServletRequest.getAttribute() @RequestMapping("/test") public String test(HttpServletRequest req) { String userId = req.getParameter("userId"); retur..

반응형