220421 TIL(OAuth, JVM의 역할)

정선모·2022년 4월 21일

4월 TIL

목록 보기
16/23

오늘 해야할 일

  • 양복 드라이 확인해보기
  • 이비인후과 방문하기
  • 내일 면접 준비
    • 이동동선 짜기(메가넥스트 -> 팀스파르타), 시간파악
    • 회사에 대해 알아보기(메가넥스트,팀스파르타, 티에프에프)
    • 질문 준비하기
      • 연봉(협상주기)
      • 복지, 총 인원, 주요업무 질문하기
    • 기술 답변, 이력서 답변 준비하기
      • 50문 50답 어느정도 인지
      • 이력서 사용한 프레임워크 정리
  • 잡플래닛 가입하기
  • 면접스터디 준비 +D2
    • 50문 50답 학습하기

오늘 공부한 것

OAuth란?

  • OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
    이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.
  • 개요
    • OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조일 가능성이 매우 많다.
    • 기본 인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예를 들면 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존의 웹서비스 API 등이 있다.
    • OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다. OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다.
  • 역사
    • 2006년 11월 블레인 쿡은 트위터에 OpenID를 탑재하는 작업을 하고 있었다. 같은 시기, 소셜 북마크 사이트인 Ma.gnolia는, 회원이 OpenID를 사용하여 대시보드 위젯으로 서비스에 접속할 수 있는 인증 방법을 필요로 하고 있었다. 이에 쿡, 크리스 메시나, 래리 하프(Ma.gnolia)는 데이비드 리코던(당시 베리사인)과 만나 OpenID를 활용해 트위터나 Ma.gnolia의 API로 인증을 위임하는 방법을 논의했다. 그 결과, API 접근 위임에 대한 공개 표준이 아직 존재하지 않는다는 결론에 이르렀다.
    • OAuth의 인터넷 커뮤니티는 2007년 4월에 탄생하여, 소수 인원으로 새로운 공개 프로토콜의 초안을 썼다. OAuth 프로젝트를 알게 된 구글의 드위트 클린턴은 지원을 표명했다. 2007년 7월, 팀은 사양 초안을 완성시켰다. 에런 해머래해브가 가세하여 많은 협력자들의 조정을 실시하여, 보다 정식적인 사양을 작성해나갔다. 2007년 10월 3일, OAuth 코어 1.0의 최종 초안이 발표되었다.[3]
    • 2008년 11월, 미네아폴리스에서 열린 제73회의 IETF 회합에서 OAuth의 비공식 회합도 열려 새로운 표준화를 향해 IETF에 OAuth 프로토콜을 제안할지를 논의했다. 회합은 성황을 이루었고 IETF에서 정식으로 OAuth 작업모임을 발족시키는 일에 폭넓은 지지를 얻을 수 있었다.
    • 2010년 IETF에서 OAuth 1.0 공식 표준안이 RFC 5849로 발표되었다.
  • 용어
    • 사용자(user): 서비스 제공자와 소비자를 사용하는 계정을 가지고 있는 개인
    • 소비자(consumer): Open API를 이용하여 개발된 OAuth를 사용하여 서비스 제공자에게 접근하는 웹사이트 또는 애플리케이션
    • 서비스 제공자(service provider): OAuth를 통해 접근을 지원하는 웹 애플리케이션(Open API를 제공하는 서비스)
    • 소비자 비밀번호(consumer secret) : 서비스 제공자에서 소비자가 자신임을 인증하기 위한 키
    • 요청 토큰(request token) : 소비자가 사용자에게 접근권한을 인증받기 위해 필요한 정보가 담겨있으며 후에 접근 토큰으로 변환된다.
    • 접근 토큰(access token) : 인증 후에 사용자가 서비스 제공자가 아닌 소비자를 통해서 보호된 자원에 접근하기 위한 키를 포함한 값.
  • OAuth와 다른 표준
    • OAuth를 사용 시의 OpenID와 의사 인증
    • OAuth는 사용자가 누구인지를 확인하는 인증(Authentication) 프로토콜이 아닌, 사용자가 요청이 권한이 있는지를 확인하는 인가(Authorization) 프로토콜이다.

참고한 출처1
참고한 출처2

JVM이란?

JVM이란 JAVA Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다 (가상머신이란 프로그램의 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이다.) JVM 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다. 그리고 JVM은 JAVA와  OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해준다. 그리고 가장 중요한 메모리 관리, Garbage collection을 수행한다. 그리고 JVM은 스택기반의 가상머신이다. ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는데 비해 JVM은 스택기반으로 동작한다.

왜 자바 가상머신을 알아야 하는가?
한정된 메모리를 효율적으로 사용하여 최고의 성능을 내기 위해서가 그 답이 될지 모르겠다. 메모리 효율성을 위해 메모리 구조를 알아야 하기 때문이다. 동일한 기능의 프로그램이더라도 메모리 관리에 따라 성능이 좌우된다. 메모리 관리가 되지 않은 경우 속도저하 현상이나 튕김 현상 등이 일어날 수 있다.  그래서, 알아두면 좋다를 넘어서 알아야 하는 것이다.

자바프로그램 실행과정
1. 프로그램이 실행되면 JVM은 OS로부터프로그램이 필요로 하는 메모리를 할당받는다. 
JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다.
2. 자바 컴파일러(javac)가 자바 소스코드(.java)를 읽어들여 자바 바이트코드(.class)로 변환시킨다.
3. Class Loader를 통해 class파일들을 JVM으로 로딩한다.
4. 로딩된 class파일들은 Execution engine을 통해 해석된다.
5. 해석된 바이트코드는 Runtime Data Areas 에 배치되어 실질적인 수행이 이루어지게 된다.
이러한 실행과정 속에서 JVM은 필요에 따라 Thread Synchronization과 GC같은 관리작업을 수행한다.

JVM 구성

오늘의 후기

양복이 못 나올수도 있습니다.

  크린토피아에 되도록 목요일에 시간맞춰달라고 요청한 양복이 금요일 아침에 오는것이 불투명해졌습니다. 미리 양해도 구하고 가능할거라고 답변을 받았던 터라 많이 당황스러웠지만, 차분하게 차선책을 강구해보았습니다. 의정부시에서 연 4회 면접전용 양복을 대여해주는 의정부 슈트잡아 서비스를 알게되었고, 당일 이용가능한 내용 확인 완료하였습니다.

청력이 돌아왔습니다.

  다녀왔던 이비인후과에서 청력이 원래 상태까지 복구되었다는 진료결과를 받았습니다. 늦기전에 방문한 것 같아서 다행이라고 생각합니다만, 이것저것 검사하면서 들었던 비용을 합치니 10만원 가량의 지출이 있었는데, 아프지말아야 돈도 잘 모이지 않을까란 생각이 듭니다.

이직준비 후 첫번째 면접

  금요일 면접가는 회사들의 규모나 업무, 위치등에 대해 어느정도 정리해보았고 받을 질문은 어떤 내용을 질문할 지 모르겠어서 기본적인 내용만 숙지하고 제가 면접관님에게 질문하고 싶은 내용들을 정리해보았습니다. 이직하면서 보는 첫번째 면접이라 조금 긴장되고 떨리지만, 최선을 다해서 보고 오도록 하겠습니다.

profile
개발자가 되어가는 비전공자

0개의 댓글