라벨이 Essay - Technology인 게시물 표시

[ Architecture, Technology ,Web ] SSO(Single Sign On) 그리고 SAML에 대해

이미지
이번 프로젝트 내부에서 어쩌다보니  유저 인증 관련 업무를 담당하게 되었고, 해야하는 업무는 내부에 사용했던 적이 없던  새로운 개발 플랫폼에서  SSO의 프로토콜 중  SAML을 이용해 앱의 인증을 구현해야만 했다. SSO를 생각해본적 조차 없는 상황에 이를 새로운 개발 플랫폼에 도입해야 했기 때문에 많은 시행착오를 겪었으나 구현에 성공하였으며 덕분에 SSO에 대한 전반적인 지식을 쌓을 수 있었다. 이번에는 그러한 과정에서 나온 지식들과 경험을  공유하고자 한다. SSO에 대한 정의 먼저 사전적 정의 부터 살펴보자. 다만, 기술적인 용어다보니 자주 사용하는 옥스포드 사전에 정의를 찾을 수 없기 때문에  검색으로 찾을 수 있는 정의를 몇 가지 살펴보고 교차 검증을 해보자. 첫 번째 정의를 살펴보자. Single sign-on (SSO) is an identification method that enables users to log in to multiple applications and websites with one set of credentials.  SSO는 웹사이트에서 한 번의 인증(one set of credentials)으로 복수의 어플리케이션에 로그인 할 수 있는 인증(identification) 방법(method) 이다. 두 번째는 위키피디아의 정의이다. Single sign-on (SSO) is an authentication scheme that allows a user to log in with a single ID to any of several related, yet independent, software systems. SSO는 독립적이지만 연관되어있는 몇몇 소프트웨어에 대해 하나의 ID로 로그인을 할 수 있도록 하는 인증 구조(scheme) 세부 설명에 조금 차이가 있어 보이지만 전체적인 틀은 매우 비슷해 보인다.  몇 가지 포인트가 되는 단어를 추출해 이를 연결해보자면 아래와 같은 의미를 산출 할 수 있다. 독립적이지만 연관되어 있

[ Essay - Technology, Essay - Society ] ChatGPT의 등장은 사회의 큰 변화를 줄 수 있는가

이미지
어느덧 한 해가 끝나가는 듯 하다. 이 글을 쓰고 있는 시점에  모두가 크리스마스를 맞이 하기 위해 꽤나 분주해보인다. 개인적으로 올해는 꽤나 의미있는 해가 되었다.  일적인 측면에도 사적인 측면에도  그리고 개인적인 성장 측면에도 꽤나 비약적인 성장을 이루었다. 그 덕분에 여력이 생겨 블로그에 작성했던 글들도  작년에 비해 꽤나 다듬어졌고,  다양한 관점의 글도 작성했다. 물론 나는 아직 부족하지만 말이다. 이제 이번 주제에 대해 본격적으로 이야기를 나누어보자. 서론 Chat GPT의 등장은 사회의 큰 변화를 줄 수 있을까? 약 7년전 구글 알파고와 이세돌의  세기적인 바둑 서커스를 보고  어떤 사람은 영화에서 보던  인공지능이 인류를 위협하게 될 것이라며 미디어에서 상상의 날개를 펼치는 사람들이  꽤나 있었던 것으로 기억한다. 과거 나의 글을 보면 알듯이  나는 예전에 머신 러닝에 흥미가 있어  이에 대한 기초 지식을 탐구한 적이 있다. 물론 나는 그 때나 지금이나  나의 의견은 여전히 동일하다. 다만, 지금 까지의 약 인공지능의 놀랄정도의 성능과 비교적 최근 openAi 내부의 정치적인 싸움까지의  스토리를 생각해보자면  흔히 이야기하는 강 인공지능은 아니지만 약 인공지능으로서 기능은  인간을 이미 뛰어 넘었으며  특이점에 다가가고 있거나 혹은  이미 특이점이 왔다고 보는 편이 좋을 것 이다. 수 많은 솔루션들이 이미  산업 전반적으로 들어오기 시작했으며  초읽기 상태에 접어든 것으로 보인다. 그리고 ChatGPT는 7년전 부터 주목받고 있는  약 인공지능의 결정체이다. 왜냐하면,  단순한 바둑을 두는 기계에서  ChatGPT는 하나의 솔루션으로서  서비스되어 대중화 되었으며 일부 업계에서는 이미 효과가 입증되었고, 그렇지 않은 업계는 비용 절감을 위해  도입을 시도하고 있기 때문이다. 나 또한 이미  이러한 서비스를 사용하고 유용성 또한 확실히 느끼고 있기 때문에  사회 전반적인 변화는 확실히 있을 것으로 보인다. 물론 최근 뉴스에서 Open API 팀

[ Essay - Technology, Neural Network, IT, Math] 왜 뉴런 네트워크에서 편향(bias)이 필요한가?

이미지
일반적으로 Input으로 부터 시작해  히든 레이어를 거쳐,  Output의 값을 추출해 내는 것이 뉴런 네트워크이다. 새로운 토이 프로젝트에 진행하기 앞서 나는 우선 Python에서 뉴런 네트워크가 어떻게  표현되는지에 대해 알아야 할 필요가 있었고, 이에 대한 튜토리얼을 포함해  과거에 배웠던 이론들과 연결시키는 작업을 하고 있었다. 그런 도중, 나는 갑자기 편향(Bias)값에 대해 의문점이 들었다. 왜 편향 값이 필요할까에 대한 의문이다. 물론 그런 것은 그냥 넘어 갈 수도 있다. 엄밀히 말하면  이런 의문들은 단순한 개발자로서는 필요 없다. 하지만 이는 탐구하는 것을 좋아하는  나의 입장에서는 무척이나 중요한 일이다. 그렇기에  이번에는 좀 더 나아가기에 앞서 이 편향(Bias)이라는 것이 왜 필요한지에 대해 이야기를 해보자. 편향에 대한 정의 한 가지 알아야할 것은 편향은  뉴런 네트워크에서 나온 용어가 아니라는 점일 것이다. 정확히 말하면, 이 편향이라는 개념은 뉴런 네트워크 이론이  대수학(Generic Algebra)에서 차용해온 용어(T erm )로서 뉴런 네트워크만의 개념은 아니다. 위키피디아 영문판에 따르면 통계에서 사용하는  편향에 대해 아래와 같이 설명한다. Statistical bias is a feature of a statistical technique or  of its results  통계적 편향은 통계적 기법 또는 통계의 결과에 대한  특징(feature)로서 where by the expected value of the results differs  실제 정량적인 매개변수와 다르게  from the true underlying quantitative parameter being estimated 결과의 예상 값이 추정하는 것을 말한다. 즉, 명확히 정략적으로 표현되는 것이 아닌 추정 값이라는 이야기 이다. 뉴런 네트워크에서 편향은 왜 필요한가? 뉴런 네트워크에서 편향이 필요한 이유는 비교적 간단하다. 뉴런 네트워크는 학습해야

[ 전지적 개발자 시점, Essay - Technology ] UX 란 무엇인가? : 점점 IT업계에 대두되는 UX

이미지
IT업계에서 일하다보면 최근에 UX라는 단어가 꽤나 자주 보이고 들린다. 심지어 UX라는 단어를 내세워서 IT 업계에서  구인을 하는 경우가 최근 들어 심심치 않게 보인다. 하지만, 새로운 개념이 먼저 생겨나고 정의가 이루어지는 IT업계가 늘 그렇듯이 UX라는 것에 대한 정확한 정의는 없다. 최소한 나는 IT업계에서의 사람들이 모여서  이런 것에 대해 명확히 할 필요성은 있다고 느끼지만, IT업계에서 일하는 사람들이 대부분 그렇듯이  비교적 커뮤니케이션 능력이 능숙하지 않는 사람들이 많기 때문에 신경 쓰지 않는 부분이기도 하다. 일단 이번 주제에서 벗어 나기 때문에  이에 대한 이야기는 접어두기로 하고, 이번에는 UX에 대한 이야기를 나누어보자. UX에 대해 어쨋든 나는 UX라는 것은 기술 보다는  비지니스 쪽에 가깝다고 생각 한다. 좀 더 정확히 이야기하면 비니지스에 IT기술을 얹은 형태라고 보는것이 좋다고 생각한다. 메인이 비지니스고 IT기술은 메인에 가깝지면 결코 메인이 되기에는 부족한 그런 형태이다. 왜냐하면,  UX라는 것은 개발자나 엔지니어 친화적이기 보단 사용자 친화적이기 때문이다. 사용자는 시스템 내부에  어떤 알고리즘이, 어떤 새로운 기술이 사용되고  얼마나 좋은 퍼포먼스를 지니고 있는지는 관심 없다. 사용자가 관심있는 것은  내가 '불편을 느끼지 않고' 편안한지, 얼마나 '흥미를 끄는지', 그리고 자신의 삶에 얼마나 유용한지에 관심이 있다. 따라서 UX는  사용자가 불편을 느끼지 않게 그리고 사용자로 하여금 흥미를 끌고, 마지막으로 유용성 까지 제공할 수 있다면 그것이 최신 기술이건 구식 기술이건 상관 없다는 이야기이다.  그렇기 때문에 비지니스적 감각이 없다면 생산성 있는 UX 솔루션을 고안하기란 쉽지 않을 것이다.  이 UX를 훌륭하게 실현하는 기업은  누구나 한번 쯤 들어봤을 법한 기업이 있다. 바로 애플이다. 애플은 아이팟이라는 mp3플레이어를 시작으로 아이폰으로 전 세계 사람들에게 사용자 경험(UX)를 구

[ Essay - Technolgy, IT, Architecture, Algorithm ] C계열과 JAVA에서의 힙 영역(Heap Area)과 스택 영역(Stack Area)에 대해서

이미지
생각할 수록 C계열과 JAVA라는 언어는  비교해 살펴보기에 매우 적절한 언어라고 생각 한다. 재미있게도 말이다. 이에 대해서는 아마 최근의 핵심적인 패러다임을  담고 있기 때문이라고 생각하고 있다. 최근 객체지향 패러다임을 담고 있는 언어들은  JAVA의 영향을 받지 않은 언어를 찾기는 쉽지않으며  구조적 패러다임을 담고 있는 언어들 또한 C계열의 영향을 받지 않은 언어를 찾기란 쉽지 않다. 후에 이 두 가지 언어에 대해  어떻게 평가를 내릴지는 알 수 없으나 현재로서는 이 두 가지 언어가 프로그래밍 역사에서 한 획을 그을 수 있는  언어들이라고 개인적으로는 생각 하고 있다. 이번에는 C계열과 JAVA의 빌드 과정에 대한 이야기에 이어서 C계열과 JAVA의 힙 영역(Heap Area)과 스택 영역(Stack Area)에 대해 이야기해보자. 힙 영역(Heap Area)과 스택 영역(Stack Area)에 대해서 힙 영역과 스택 영역에 대한 이해는  개발자로서 알아둬야할 것 중에 하나이지 않나 싶다. 물론 필수라고 할 수 는 없지만, 진정한 엔지니어나 아키텍터라면 이해해야만 하는 덕목이라고 생각 한다. 왜냐하면, 언어 내부에서 힙 영역과 스택 영역을  어떻게 다루느냐에 따라 퍼포먼스가 갈릴 수 있기 때문이다. 따라서 시스템의 퍼포먼스 까지 생각해야하는  진정한 엔지니어나 아키텍터가 이에 대한 이해가 없다면 훌륭한 엔지니어나 아키텍터가 될 수 없을 것이다. 어쨋든 먼저 C계열과 JAVA를 비교하기전에 힙 영역과 스택 영역이 무엇인지에 대해 간단히게 이야기 해본 후에 실제 C계열 중 C#과 JAVA에서 메모리 관리를 하기 위해  어떻게 이 스택과 힙이라는 영역을 활용하는지에 대해 이야기 해보자.  스택 영역(Sta