[ 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 - Society ] 사회에 살아가기 위해서는 외국어는 꼭 배워야하는가( Is it necessary to learn a foreign language for live in society)

이미지
이 에세이는 나의 생각 카테고리 글 중에 <지금 시점에서 외국어를 배울 필요성이 있는가에 대해>의 연장선이다. 따라서 이런 주제를 사회로 좀 더 확장시켜서 <사회에 살아가기 위해서는 외국어는 꼭 배워야하는가>라는 주제로 에세이를 작성해보려 한다. 이에 아마 전에 쓴 부분과 중복되는 내용이 있을 것이다. ・사회와 외국어 그리고 머신러닝 최근에 알파고가 세상에 드러나면서 많은 변화가 있었다. 당시 일반 사람들에게는 AI가 세상을 정복하는게 아니냐는 식의 이야기가 뉴스에서 많이 떠돌았다. 뭐 실제로는 다르지만 말이다. 어쨋든 일반 사람들에게 까지 AI가 가능성이 있겠다는 인식을 심어주면서, 시장 개척의 가능성도 함께 드러났다. 그 이후 많은 기업들이 AI쪽으로 눈을 돌렸고, 실제로 이미 AI쪽에 올인을 건 기업도 많다. 그 만큼 미래의 산업은 AI가 중심이 될 것이라 기업들은 판단한 것 이다. 그리고 지금에서 실질적으로 느낄 수 있는 AI기술이 쓰이고 있는 곳은 마케팅과 이미지 인식 쪽인 컴퓨터 비전, 그리고 번역 기술인것 같다. 사실상 머신러닝은 지금 연구가 엄청 진행되고 있는 단계이기도 하고, 연구할 인원도 부족하며, 현실과 연결 시켜줄 엔지니어들도 사실 없다고 보면 된다. 하지만 이 머신러닝이 현실에 다양한 분야에 적용 될 정도의 기술로 발달 한다면, 아마 세상의 패러다임이 다시 한번 바뀔 것이다. 9년전 아이폰이 등장 한 것 처럼 말이다. 아이폰이 등장해 스마트 폰이라는 새로운 시장의 개척과 스마트폰에 관련된 다양한 시장이 개척되고 패러다임이 바뀌었다. 이에 대해 가장 득을 본 것은 아마 삼성전자와 구글일 것이다. 이와 같이 머신러닝 기술도  새로운 시장이 개척되고 관련된 다양한 시장이 개척될 것 이다. 이 것이 우리의 가까운 미래이다. 내 생각에는 얼마 멀지 않은 것 같다. ・외국어 공부에 대한 필요성에 대해

[ 프로젝트 BEP ] 제 2장 : 개발 방법론 - 워터폴(WaterFall) ① <워터폴이란 무엇인가>

이미지
이번 이야기는 개발 방법론 중 사실상 국제 표준 개발 방법론 이라고 할 수 있는 '워터폴(WaterFall)'에 대해 이야기를 할 것이다. 대부분의 프로젝트는 이 '워터폴(WaterFall)'에 기반을 두고 진행하는 프로젝트가 많을 것 이다. 왜냐하면, 과거부터 이런 프로세스로 성공한 프로젝트 수가 많다는 것을 보면, 워터폴 기반의 개발 프로세스가 안정적이라는 것을 알 수있고, 대다수가 그렇게 느끼고 있기 때문이다. 따라서 누군가가 표준이라고 정하지 않더라도 우리는 암묵적으로 '워터폴(WaterFall)'을 표준으로서 사용하고 있다. 물론 그렇다고 단점은 없는 것은 아니다. 워터폴의 단점 때문에 애자일이라는 개념의 개발 프로세스가 등장했으니 말이다. 어쨋든 애자일은 다음에 하기로 하고, 이번에는 워터폴에 대해 이야기를 해보자. ・워터폴(WaterFall)이란 무엇인가? 한국말로는 폭포수라고도 한다. 아마, 위에서 아래로 떨어지는 폭포수와 같이 이 방법론이 절차대로 아래로 떨어지기 때문이라고 생각한다. 어쨋든 어원은 크게 중요하지 않으니 그렇게 이해하고 있으면 된다. 우리에게 중요한 것은 어원이 아니라 워터폴 모델에서 얻을 수 있는 직감(intuition)이다. 워터폴 모델은 사실 단 한 가지만이 존재하는 것은 아니다. 파생 워터폴 모델들이 엄청 많으며, 이는 대부분 기본형에서 변형한 것이기 때문에 우리가 알아야 하는 것은 가장 기본적인 워터폴 모델이다. 그리고 이런 기본형 워터풀 모델에서 직감을 가져올 수 있다면, 다른 파생 워터폴 모델을 보더라도 큰 문제점은 없을 것이다. 워터폴(WaterFall) 기본형 모델 위의 그림은 사실상 가장 기본이라고도 할 수 있는 워터폴 모델이다. 순서는 아래와 같다. ①요구 분석(Analysis) → ②설계(Design)  → ③개발(Implementation) →  ④

[ Essay - The People ] The People들은 책임감으로 부터 자유로울 수 있는가( Can The People be free from responsibility : 2) : 2

이미지
1장에 이어서 2장은 팔다리가 없어진 정부와  반쪽짜리 The People들에 대한 이야기를 시작하면서 The People들의 목소리인 '여론'에 대한 이야기 그리고 내가 논하고 싶어하는  The People들이 책임감으로 부터 자유로울 수 있는지를 이야기하고, 결론으로 마무리를 짓도록 하겠다. 그럼 바로 본론으로 넘어가자. ・팔다리가 없어진 정부와 반쪽 짜리 The People들 1장에서 이야기 했듯이 지금의 정부는  무언가를 강력하게 자신들의 이상을 펼치기 힘들다. 왜냐하면 군주정에서의 정부(왕과 그 신하)에서는  정책의 기획부터 실행까지 할 수 있는 강력한 힘을 가지고 있었기 때문에 자신들의 이상을 마음껏 세상에 펼칠 수 있었지만 현대의 민주주의의 정부는 독재를 막기 위해 혹은 강력한 힘으로 옳지 못한 일을 막기 위해  정책의 기획은 할 수 있지만 실행은 할 수 없다. 따라서 정부는 그러한 실무 경험 조차도 없기 때문에 그러한 힘을 가진 것은 정부 산하 기간의 고위 공무원이다. 그러한 예로 이번 코로나 바이러스에 대한 대책으로 정부가 원했던 대책(이상)과  질병관리본부가 원했던 대책(이상)이 상이하게 다름으로서  나타난 혼란이 이러한 민주주의 시스템의 한계를 여지없이 보여준다. 정부의 이상과 이러한 실무를 담당하는 공무원들의  이상이 일치하지 않는 이상 문제는 해결되지 않고 혼란만 남길 뿐이다. 여기서 가장 중요한 역할을 해야하는 것이  The People들이다. 하지만 1부에서 언급했듯이 어떤 이유에서든  지금의 The People들은 반쪽 짜리다. 한 사람 한 사람이 힘을 가진다는 민주주의에서 자신의 의견을 표출할 수 없으며 다수의 The People들이 옳다고 생각하는 의견과 다르면 소수의 The People들에게 철퇴를 내리는  그러한 민주주의가  정말로 민주주의라고 할 수 있을까? 민주주의는 둘째 치고 과연 그것이 '자유'인가? 우리는 우리들의 민주주의에 자유를 붙여 자유 민주주의라고 자칭하고 있지 않은

[ Essay - The People ] The People들은 책임감으로 부터 자유로울 수 있는가( Can The People be free from responsibility : 1) : 1

이미지
인민(the people)은 책임감으로 부터 자유로울 수 있는가! 이보다 흥미로운 질문은 흔치 않을 것이다. 과거 부터 이런 생각이 머리속을 맴돌았기에, 그리고 이번에는 이런 주제로 에세이를 쓰고 싶다는 의욕이 강하기에, 이번 기회를 통해 에세이를 써보면서 정립해보려 한다. 우선 들어가기 전에 서론 이후에는 인민이라는 단어를 쓰지 않고 대신에 the people을 쓸 예정이다. 왜냐하면, 나중에 다른 언어로 바꾸어서 따로 작성할 예정이지만 초안은 한국어로 작성할 것이기 때문이며, 개인 블로그에 올라갈 예정이기 때문이다. 하지만,현재 한국에서 인민이라는 단어는 대개 좋지않은 의미로 받아들여지고 있기 때문이다. 따라서 그 의미가 실제로 어떤 의미를 담고 있는 것과는 상관 없이 실제 인민이라는 단어가 한국 사회에서 좋게는 받아들여져 있지는 않기 때문에 나는 인민이라는 단어 대신 the people을 사용할 예정이다. 물론 이번 주제가 인민에 대한 것이고 the people의 번역으로서 인민이 적절함에는 나도 동의하는 바이지만 이 에세이는 개인 블로그에 올릴 예정인 에세이로 누군가 본다는 가정하에 작성되어지고 있다. 내가 인민이라는 단어를 씀으로써, 나의 글에 비판적인 생각이 아닌 거부감을 느낀다면, 그것은 내가 원하는 바가 아니다. 그렇기에 이 후에는 조금 번거롭더라도 인민이 아닌 가급적 the people을 사용하도록 하겠다. 어쨋든 내가 이런 주제와 같은 의문을 가진것은 나를 포함하고 있는 the people들은 민주주의 시대에 살고 있고, 그런 것들이 '진리'라고 여겨져 있는 사회에 살고 있는 현실속에서 the people들은 어떤 책임감으로 부터 자유롭기 때문이며, 그런 인식이 사람들의 머리속을 지배하고 있기 때문이다. 나는 그러한 사실은 매우 정당하지 않다고 생각한다. 왜냐하면, '인간'의 집단이 아무리 뛰어

[ Essay - Human ] 툰베리가 주목 받고 있는다는 사실은 사회에 무엇을 외치고 있는가( What does it mean that Greta Thunberg attracts attention in society : 2) : 2

이미지
이번 글은 1에 이어서 논의를 해보려고 한다. 이번 논의는 '청소년 툰베리'의 영향력이 생각보다 강력하다는 사실이 우리에게 어떤것을 외치고 있는가에 대한 논의를 시작으로 마지막 결론에 대해 이야기 할 것이다. 그럼 바로 본론으로 들어가자. ・'청소년 툰베리'가 가지는 영향력은 어떤 것을 사회에 외치고 있는가   나의 논지에 어느정도 동의한다면, 우리는 다음 논지로 넘어갈 수 있을 것이다. '청소년 툰베리'가 가지고 있는 강대한 영향력과  이를 지지하고 있는 세력들이 많다는 사실이  사회에 어떤 것을 외치고 있고, 이는 무엇을 시사하는가 이다. 이는  '청소년'과 '어른'의 경계선이 무너지고 있음을  사회에 외치고 있다고 나는 생각하고 있다. 왜냐하면, 괜찮은 교육을 받고 있으며, 인터넷을 사용할 수 있는  현재 우리들의 '우리'는 이런 '어른'만이 포함되어있지만, 경계선이 무너진다면 더 이상 '어른'만이 아니라  '우리'에 '청소년'도 포함될 수 있다는 말이 된다. 이런 경계선이 무너지고 있는 상황에서 '어른'들은 '청소년'보다  어떤 특별함을 가지고 있기 때문에  도둑질을 하며,  사람을 속이고,  심지어 사람을 죽이는 데에도 '청소년'들과 크게 다를바가 없는 '어른'들이 왜 '청소년'들에게 제약을 가하는 사람으로서  있다는 것이 정당하며, 그리고 왜 그것이 자연스럽게 관습으로서 자리잡았는가 에 대한 질문이 자연스럽게 떠오른다. 이런 논의를 제쳐두더라도 나는 단순하게 나이로서  '어른'과 '청소년'을 나누는 관습에 대해  나는 의문을 가질 수 밖에 없다.

[ Essay - Human ] 툰베리가 주목 받고 있는다는 사실은 사회에 무엇을 외치고 있는가( What does it mean that Greta Thunberg attracts attention in society : 1) : 1

이미지
이제 에세이를 쓰는 것도  어느정도 정립되었기 때문에 자유롭게 쓰는 '생각'과  조금은 형식을 갖춘 '에세이'로 나누어서 작성하려고 한다. 그리고 카테고리 '생각'의 경우는 수정이 거의 없지만, 카테고리 '에세이'의 경우 최하단에  간단한 이력을 명시해 놓을 예정이며, 에세이의 수정시 계속해서 업데이트 될 예정이다. 따라서 이후의 글의 카테고리 또한  그렇게 나뉘어질 예정이다. 그리고 이에 따른 대망의 첫번째 에세이로 나는 툰베리가 주목 받는 것이  사회에 어떤 것을 시사하는가에 대해 이야기하고 싶다. 왜냐하면, 사람들이 행동하고 선택하는 것에는  그 나름의 이유가 있기 때문이고 그런 이유에는 내가 인지하지 못하는 어떤 이유가 있음에 틀림없다고 생각하기 때문이다. 어떤 사람들은 툰베리와 그의 지지자들을 보고 '멍청하다'느니 '세상물정을 모른다'느니 '저런 멍청한 꼬맹이가 노벨 평화상의 후보라니!' 라며 마치 세상이 곧 멸망할 것 처럼 이야기하면서 치를 떨지는 모르겠다. 하지만, 위에서도 살짝 언급했듯이  나는 모든 행동에 이유가 있다고 생각하는 사람이다. 그것이 정당한 이유이던 정당하지 않던간에 많은 사람들이 툰베리를 지지하는 이유는  아마 어떤 이유가 있으리라 생각한다. 또한 밀의 '자유'라는 이름하에 그들이 가지는 생각은 정당하다. 물론 그들을 비판하는 것 또한  정당한것은 말할것도 없다. 하지만, 이런것들을 다 떠나서 그 이유에 대해서는 지금의 내가 알 방법이 없다. 그들과 대화를 할 수 있을 수가 없으며, 그들의 이야기는 현재진행형이다. 따라서 그들에 대해 평가를 하는 것은 옳지 못하며, 평가는 후손들의 몫이지 나의 몫이 아니다.

[ 프로젝트 BEP, Essay - Developer ] 제 2장 : 개발 방법론 - 왜 개발자는 개발 방법론을 배워야 하는가?

이미지
이번에는 개발 방법론에 이야기 하려고 한다. 이에 해당하는 학문으로서의 이름은 Software Engineering, 한국어로는 소프트웨어 공학이라는 학문일 것 이다. 그 안에 이번에 이야기 하고자하는 개발 방법론이 포함되어 있다. 여기서 이야기하는 것들은 프로젝트 관점에서 이야기를 한다. 프로젝트의 프로세스는 어떻게 할 것인가? 프로젝트의 비용에 대해서는 어떻게 정할 것인가? 또는 구성원은 어느정도로 하는 것이 좋은가 등등에 대한 학문이다. 아마 건축의 공학적 개념을 소프트웨어에도 적용한것이 아닌가 싶다. 물론 건축의 설계는 실질적인데에 비해 소프트웨어의 설계는 굉장히 추상적이기 때문에 동일 시 할 수는 없을 것이다. 이 Software Engineering이라는 학문안에는 여러가지 개념이 있겠지만, 개발자로서 중요한 곳은 개발 방법론이 아마 가장 중요하다고 생각한다. 그렇다면, 왜 소프트웨어 개발자는 이런 개발 방법론을 알아야할까? 이에 대해서는 '컴퓨터 개론'에 비해서는 비교적 명쾌하다고 할 수 있다. 왜냐하면, 실제 프로젝트는 이런 개발 방법론을 기반으로 개발 프로세스를 가지기 때문이다. 1장에서 이야기 했던 것은 어쩌면 개발 방법론 보다 실무에서 떨어져 있을 수도 있다. 하지만 개발 방법론은 다르다. 소프트웨어 개발자들은 프로젝트의 한 구성원으로서 일을 한다. 그리고 프로젝트의 책임자들은 이런 개발 방법론을 기반으로 실제 개발 프로세스(일정)를 작성한다. 따라서 우리는 이런 개발 방법론을 학문적으로는 자세히는 알 필요는 없지만, 어떤 것이 있고, 어떤 장점과 단점을 가지고 있는지 알 필요가 있며, 이에 대한 직관을 가질 필요가 있다. 이를 통해 실제 프로젝트를 진행하며, 어떨때는 이 개발 프로세스가, 어떨때는 다른 프로세스가 더 어울리는지 개발자로서 직감적으로 느끼고 있어야 한다. 왜냐하면 우리가 그 프로젝트에 직접 참여하게

[ 프로젝트 BEP ] 제 1장 : 컴퓨터 개론 - 폰 노이만 병목 현상(Von Neumann bottleneck)과 메모리 누수(Memory Leak) 현상에 대해

이미지
폰 노이만 병목 현상(Von Neumann Bottlenect) 우리는 살다보면  병목 현상(Bottleneck) 이라는 말은 한번쯤 들어봤을 것이다. 폰 노이만 구조에도 이런 병목 현상이 발생한다. 폰 노이만 구조 병목 현상 위에서 언급한 분류를 다시 한번 언급하겠다. 제어 장치, 산술장치  → CPU(중앙처리장치) 메모리  → RAM, Cache 등 그외의 디바이스(저장 장치 등)  → HDD, SSD , USB Drive ,CD Drive 등   폰 노이만 구조에서는  메모리 와  그외의 디바이스 를 메모리 라는 이름으로 하나로 묶었던 것을 기억할 것이다. 하지만 현재 컴퓨터 아키텍처는 이를 분리하였는데, 이는 CPU의 처리속도는 빠른것에 비해, 메모리에서 CPU까지 전달 속도가 느림에 따라 메모리(저장 장치등을 말함)에서 CPU까지 아직 데이터가 도달하지 않았는데, CPU는 이미 그 전에 전달 받은 처리를 끝내 대기하는 상태 즉,  병목 현상 이 나타남에 따라 자주 쓰는 데이터들을  메모리(Ram, Cache 등) 에 올려놓는 것 으로 이 구조를 개선한 것이 현재의 컴퓨터 구조이다. 하지만, 이것은 개선한 것에 불과하며, 여전히  병목 현상 은 나타난다. 이렇게 분리함에 따라 SSD나 HDD와 같은 저장장치를 비휘발성 메모리, RAM과 Cache를 휘발성 메모리라고 학문으로서 분류되어 있지만 사실 크게 중요하지는 않다. 중요한 사실은 CPU처리 속도가 너무 빠른 것에 비해, 다른 장치들에서 CPU까지의 전달 속도가 매우 느리다는 것 만 기억하면 된다. 특히, 소프트웨어로서 이야기 되어지는 것은 SSD나 HDD와 같은 즉,  저장 장치의 전달 속도가 비교적 매우 느리다는 것 을 기억하기 바란다. RAM이 컴퓨터 시스템에서 필요한 이유 RAM 이라고 불리우는 메모리가 필요한 이유가 여기서 드러난다. 새로운 처리가 필요할 때마다  HDD나 SSD와 같은 저장 장치에서  다시