최근 미국의 전기차 기업 테슬라에서 사내 CCTV가 해킹당해 회사 내부의 모습이 노출되는 사건이 있었습니다. 또 송유관 운영회사 콜로니얼 파이프라인이 랜섬웨어 공격을 받아 시스템이 마비되어 수많은 자동차가 연료를 공급받지 못해 대혼란에 빠지는 사태가 발생하기도 했습니다. 두 사건 모두 해킹으로 벌어진 일입니다.


[그림 1] CCTV 해킹으로 인해 노출된 테슬라 회사 내부
 
해킹 사고는 주로 소프트웨어(SW) 보안취약점을 공격 경로로 이용합니다. 소프트웨어 보안취약점이란 소프트웨어 개발 시 결함이 될 수 있는 논리적인 오류나 버그, 실수 등 이후 취약점으로 발생할 수 있는 근본 원인을 말합니다. 시스템에 보안취약점이 존재하고 그로 인해 정보가 노출된다면 해커는 해당 정보를 이용해 시스템을 공격하는 것입니다. 그럼 개발자는 어떻게 해커들의 공격을 방지할 수 있을까요? 이를 위해 '시큐어코딩(Secure Cording)'이 필요합니다.
 
 
 
시큐어코딩이란 무엇인가요?
 

[그림 2] 코딩 화면
 
시큐어 코딩은 해킹 등 사이버 공격의 원인인 보안취약점을 제거해 안전한 소프트웨어를 개발하는 SW 개발 기법을 말합니다. 개발자의 실수나 논리적 오류로 인해 발생할 수 있는 문제점을 사전에 차단하여 대응하고자 하는 것입니다. 정보보호가 SW 개발의 중요한 주제로 떠오르는 지금 시큐어 코딩은 선택이 아닌 필수가 되었습니다.
 
 

시큐어 코딩 가이드
 
시큐어 코딩은 개발단계에서 적용되기 때문에 개발자의 코딩 작업이 핵심 대상이 됩니다. 그러나 개발자로서 취약점을 모두 고려하는 프로그래밍이란 어려운 일입니다. 따라서 어떠한 규칙에 따라 코딩을 하면 되는지에 대한 기준이 있으면 좋을 것입니다. 그리고 실제로 국내에서는 2012년 12월부터 행정안전부에 의해 시큐어 코딩에 대한 법규가 제정, 시행되어 그 기준을 제시하고 있습니다.
 

[그림 3] 행정기관 및 공공기관 정보시스템 구축·운영 지침
(출처:행정안전부고시 제2021-3호, 2021.1.19.)

그리고 그 기준은 다음과 같이 50개의 소프트웨어 보안 약점 항목으로 구성되어 있습니다.


[그림 4] 소프트웨어 개발 보안 가이드
(행정안전부고시 제2021-3호, 2021.1.19.)
 
이번 블로그 시간에는 소프트웨어 개발 보안 가이드를 기반으로 시큐어코딩의 7가지 유형에 대해 살펴볼 것입니다. 개발 경력이 없으신 분들도 이해할 수 있도록 최대한 쉽게 설명하겠습니다. :)



1. 입력데이터 검증 및 표현
 
입력데이터 검증 및 표현이란 폼 양식의 입력란에 입력되는 데이터로 인해 발생하는 문제를 예방하기 위해 점검하는 보안 항목을 의미합니다. 쉽게 말해서 사용자가 비정상적인 데이터를 입력하여 시스템에 손상을 주거나 정보를 수정 및 탈취하지 못하도록 방지하는 것입니다. 이는 주로 SQL 인젝션(SQL Injection) 공격을 막기 위한 코딩이라고 할 수 있습니다. SQL(Structured Query Language)은 DB 관리에서 가장 중요한 핵심 요소로 실제로 저장된 데이터를 수정, 삭제, 삽입할 수 있는 기능이 있습니다. 예를 들어 은행 업무 시스템에서는 SQL을 이용해 계좌의 잔액을 조절한다고 볼 수 있는 것입니다. 이토록 중요한 SQL이 악의적인 해커 마음대로 실행될 수 있다면... 정말 치명적인 문제가 될 것입니다. 이를 방어하기 위해 사용자가 입력한 데이터를 확인해 공격 시도로 의심되는 단어를 치환하거나 차단하는 방식을 이용합니다. 이것이 바로 입력데이터 검증 및 표현의 가장 핵심요소라고 말할 수 있겠습니다.

[그림 5] 안전하지 않은 코드의 예 JDBC API
 

안전하지 않은 코드의 예로, 외부에서 받는 데이터인 'gubun'의 값을 검증 없이 사용하고 있습니다. 이 경우 gubun의 값으로 a' or 1=1 이 들어간다면 board 테이블의 전체 데이터가 조회됩니다.



[그림 6] 안전한 코드의 예 JDBC API

안전한 코드의 예로, 파라미터를 받는 PreparedStatement 객체를 상수 스트링으로 생성하고 파라미터 부분을 setString 등의 메소드로 설정해야 합니다.



2. 보안 기능
 
보안 기능이란 소프트웨어 개발 구현단계에서 코딩하는 기능인 인증, 접근제어, 기밀성, 암호화 등을 올바르게 구현하기 위한 보안 항목을 의미합니다. 주로 암호와 같이 중요한 정보를 암호화 없이 저장하거나 프로그램 내부에 하드 코딩되어 노출의 위험성이 있는 경우, 인증과 권한 관리를 부적절하게 구현할 시 발생하는 문제가 있습니다. 서두에 말씀드린 테슬라 해킹 사건이 이 항목에 해당합니다. 해커가 이중인증시스템의 취약점을 파악하고 이를 이용해 보안 체계를 우회한 것입니다. 보안 기능은 비인가 접근을 방어하고 저장된 정보를 암호화하여 취약한 기능이 존재하지 않도록 하는 것이 중요하다고 말씀드릴 수 있겠습니다.
 


3. 시간 및 상태
 
시간 및 상태는 동시 또는 거의 동시 수행을 지원하는 병렬 시스템이나 하나 이상의 프로세스가 동작하는 환경에서 시간 및 상태를 부적절하게 관리하여 발생할 수 있는 보안 약점입니다. 프로그래밍을 하다 보면 하나의 자원을 다수개의 프로세스가 사용해야 하는 경우가 생깁니다. 이때 자원 공유가 적절히 진행되지 않아 프로그램이 꼬일 수 있게 됩니다. 예를 들어, 프로세스 A는 ①파일이 존재하는지 확인하고 ②파일을 읽는 과정을 진행합니다. 프로세스 B는 파일을 삭제합니다. 만약 프로세스 A의 과정①이 진행되고 과정②가 시작되기 전 프로세스 B가 파일을 삭제해버린다면 프로세스 A가 삭제된 파일 읽기를 시도하므로 *레이스컨디션이 발생합니다. 이 밖에도 종료되지 않는 반복문이나 재귀문을 사용하여 무한루프에 빠지는 것도 시간 및 상태 점검 항목에 포함됩니다.

*레이스컨디션(Race Condition): Race Condition은 두 개 이상의 프로세스가 공용 자원을 병행적으로(concurrently) 읽거나 쓸 때, 공용 데이터에 대한 접근이 어떤 순서에 따라 이루어졌는지에 따라 그 실행 결과가 달라지는 상황을 말한다.


 
4. 에러 처리
 
에러 처리는 이름 그대로 에러를 처리하는 방식이 부적절하거나 누락되어 발생하는 보안 항목을 의미합니다. 종종 개발자가 디버깅의 편의성을 위해 에러 메시지를 화면에 출력하는 경우가 있습니다. 에러 메시지는 시스템과 관련된 중요 정보를 포함하는 경우가 많아 공격자의 악성 행위를 도울 수 있습니다. 또한, 오류가 발생할 상황을 적절하게 검사하지 않았거나 잘못된 처리를 한 경우도 에러 처리 항목에 포함됩니다. 에러 처리는 가능한 최소한의 정보만을 담고 있어야 하며, 광범위한 예외 처리보다는 구체적인 예외 처리를 통해 보안 공격을 사전에 방어하는 것이 중요합니다.
 

[그림 7] 안전하지 않은 코드의 예 에러처리
 
안전하지 않은 코드의 예로, try 구문에서 예상되는 예외 상황을 catch 하지만, 그 오류에 대해 추가로 아무 조치를 하지 않고 있습니다. 이런 상황이라면 사용자는 프로그램 내부에서 어떤 일이 일어났는지 전혀 알 수 없게 됩니다.

[그림 8] 안전하지 않은 코드의 예 에러처리
 
예외 catch 후 적절한 조치를 수행한 예
 


5. 코드 오류
 
코드 오류는 구현 단계에서 개발자의 실수나 지식 미달로 인한 오류를 예방하기 위한 점검 항목입니다. 주로 형(Type)변환 오류, 자원 반환, NullPointer 참조가 이에 해당합니다. 이 부분은 개발 경험이 없는 경우 이해하기가 조금 어려우실 수 있습니다. Null 값을 체크하지 않고 변수를 사용한다든가 실수로 스레드와 같은 자원을 무한하게 할당하여 시스템에 부하를 주는 경우가 있습니다. 개발자가 잘못된 코딩 습관을 들인다면 코드 오류 항목에서 번번이 보안 취약점에 걸리게 됩니다. 본인만의 보안 코딩 규칙을 만들어서 습관을 들이는 것을 추천합니다.



6. 캡슐화
 
캡슐화란 객체 지향 방법론에 중요한 개념으로 객체와 필드의 은닉을 통해 외부의 잘못된 사용을 방지하는 것을 의미합니다. 그런데 가끔 시스템의 데이터나 기능을 불충분하게 캡슐화하거나 잘못된 방법을 이용함으로써 보안 취약점으로 작용하는 경우가 있습니다. 부적절한 캡슐화는 정보은닉의 기능을 잃어버립니다. 시스템의 중요 정보가 노출되어 공격자는 이 정보를 이용해 식별 과정을 우회할 수 있습니다. 변수 제어 함수가 노출된다면 공격자는 원하는 값으로 데이터를 외부에서 수정할 수 있게 됩니다.


 
7. API 오용
 
API(Application Programming Interface)란 응용프로그램에서 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다. 이렇게만 설명하면 명확한 개념이 잘 떠오르지 않습니다. 쉽게 말씀드리면 API는 프로그램들이 서로 소통하는 것을 도와주는 매개체 역할을 합니다. 음식점에서 주문을 받고 서빙을 해주는 웨이터에 비유할 수 있죠. 이렇듯 개발자는 편리하게 개발하고 유용한 정보를 얻기 위해 API를 활용합니다. 그러나 의도된 사용에 반하는 방법으로 API를 이용하거나, 보안에 취약한 API를 이용한다면 심각한 보안 취약점이 될 수 있습니다. 예를 들어, 만약 공격자에 의해 로컬 DNS 캐시가 오염된 상황에서 DNS만 확인한다면 공격자의 네트워크로 경유하거나 공격자의 서버를 도착지로 인식할 수도 있습니다. 이를 방지하기 위해 보안에 취약한 API 사용은 피해야 하며 DNS가 아닌 IP를 확인하는 것이 중요합니다.
 


마치며
 



지금까지 소프트웨어 개발 보안 가이드 시큐어 코딩 7가지 유형에 대해 알아보았습니다. 실제로 개발 보안 가이드를 보시면 더욱 자세한 내용을 확인하실 수 있습니다. 개발 단계뿐만 아니라 분석, 설계 단계의 보안 기법도 자세히 설명되어 있기에 꼭 한번 읽어보시는 것을 추천해 드립니다.

앞으로 디지털 트랜스포메이션과 IoT를 비롯한 SW 시장은 더욱 확대될 것입니다. 하지만 우리가 구성한 네트워크가 보안 위협의 통로가 될 수 있다는 것을 잊지 말아야 합니다. 이제 민관기관에서도 시큐어 코딩을 적극적으로 채택하고 있다고 하니, 시큐어 코딩에 대한 전문성을 길러보시는 것은 어떨까요? :) 오늘 내용이 여러분에게 많은 도움이 되셨길 바랍니다.
 


Posted by 人Co

2021/05/28 16:33 2021/05/28 16:33

[Webinar] 제7회 유전체 데이터 분석 교육

Posted by 人Co

2021/05/28 15:56 2021/05/28 15:56
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/382

가상 환경의 기업을 꿈꾼다! Gather.Town



오늘은 비대면 플랫폼이 속속 등장하고 있는 현시점에서, 재택근무 중 사내 직원들과의 소통, 고객사와의 소통을 위한 플랫폼에 대하여 블로그를 작성해보았습니다.
코로나 19가 사그라지지 않고 계속되기 때문에 많은 기업이 재택근무를 시행하게 되었습니다. 저와 같이 일하던 몇몇 분들은 재택근무로 자리를 비우게 되어 의사소통이 어려워졌습니다.
이런 불편한 점을 해결해 줄 수 있는 기술이 있습니다. 언제, 어디서나 가상 공간의 형태로 실시간 소통을 주고받을 수 있는 장소를 만들어주는 서비스인 Gather.town(개더 타운)이 바로 그것입니다.


기존의 화상 회의 서비스

아무래도 코로나 19사태로 가장 큰 활용도를 보여준 서비스는 화상 회의 서비스인 Zoom, Team, Google Meet 등이 아닐까 싶습니다. 특히 Zoom은 학교 화상 서비스를 이용해 수업을 진행하고 많은 기업에서 일대일 혹은 다대다 의사소통을 진행하기 위해 사용되고 있는 서비스입니다. 하지만 기존 화상 회의 서비스의 문제점이 다양하게 존재했습니다. 장시간 화상 통화를 하게 되면 극심한 피로를 가져온다고 합니다. 그래서 Zoom Fatigue(줌 피로)라는 단어가 생겨났습니다.


[그림 1] Zoom Fatigue 


 
'장시간의 화상 통화는 피로를 유발한다.'
Zoom Fatigue(줌 피로)

최근 마이크로소프트에서 화상 회의 후 사람들이 극심한 피로감을 느낀 점에 대해 수치로 조사하여 공개하였습니다. 화상 회의를 하면 모니터의 본인 얼굴과 계속 마주하며 부담감과 피곤함을 느껴 계속 신경이 쓰일 수밖에 없게 됩니다. 이처럼 실시간 감시가 이루어지는 환경에서는 휴식이 자유롭게 보장되는 경우가 거의 없다고 합니다. 이러한 문제를 보완하기 위해서는 30~45분마다 휴식을 취하고 화면에서 벗어나 음료를 마시고 5분 동안 신선한 공기를 마시거나 워밍업(warming-up) 시간이 필요하다고 밝혔습니다.

이와 같은 경험으로 발표할 때 목소리로만 발표하는 것보다 직접 얼굴을 비쳐 발표하는 것이 피로감이 더 크다고 느낀 바가 있으며,
프레젠테이션이 끝났을 때 기운이 빠지는 것으로 보아 해당 수치에 많은 공감이 되었습니다.

[그림 2] 마이크로소프트에서 조사한 줌 피로 수치
 


Gather.Town(개더 타운)


[그림 3] Gather.Town
하지만 이러한 Zoom fatigue를 예방할 수 있는 획기적인 화상 회의 서비스가 나타났습니다. 바로 개더 타운(Gather.Town)인데요. Zoom이나 Teams와 같은 화상 회의 솔루션의 일종이지만, 개더 타운은 가상 공간과 아바타를 적극적으로 도입한 것이 특징입니다.
예를 들어, Office라는 가상 공간을 만들고, 각 참여자는 고유한 아바타를 가지고 가상 공간을 공유를 받은 후 다른 아바타에 접근함으로써 그 사람과 화상 회의를 할 수 있습니다.

이처럼 새로운 방식으로 일대일 화상 회의는 물론 다대다 화상 회의도 가능합니다.
다양한 가상 공간의 UI를 사용자가 직접 만들 수 있고, 자신만의 캐릭터들도 꾸밀 수 있습니다.
개더 타운에서의 다양한 기능을 활용한다면 기존 온라인 콘퍼런스가 단방향 세미나 형태에 가까웠던 것을 다양한 장소에서 콘퍼런스를 진행할 수 있기에 가치가 높게 평가되고 있습니다.

[그림 4] 개더 타운 화상회의 사진
 


현실 세계의 규칙을 담은 개더 타운!

개더 타운은 마치 게임처럼 방향키를 사용해 아바타를 움직이면서 다양한 가상공간을 이동할 수 있고, 모임의 성격에 따라 캠퍼스, 루프탑, 공원 등 다양한 맵을 제작할 수 있게 되어 화상 회의를 지루하지 않게 진행할 수 있습니다.
또한, 다른 메타버스 서비스들과는 달리 가상 오피스에서도 현실 세계의 규칙을 그대로 적용했다는 점이 가장 인상 깊었습니다!
직접 카메라를 켜고 이야기를 할 수 있으며, 아바타 간의 거리가 서로 멀어질수록 화면도 흐려지고, 소리도 점점 작아집니다.
그래서 같은 공간 안에서도 특정 사람들과 소통이 필요할 때, 따로 소회의실을 만들지 않아도 아바타를 움직여 바로 모임을 할 수 있다는 장점이 있습니다.

개더_타운_UI.gif
[그림 5] 개더 타운 UI
 


직방, 원격 근무 상시화... "오프라인 출근 없앤다"

직방에서는 본사 사무실 운영을 중단하고, 비대면 원격 근무를 상시화해 업무 환경의 디지털 전환에 선제로 대응한다는 방침이라고 합니다. 코로나 19로 시작된 원격 근무가 기본 근무 형태로 자리 잡는 모습이며 서비스로 개더 타운을 도입해 활용 중이라고 합니다.
개더 타운을 이용하면서 전통적인 오프라인 출근 혹은 사무실 개념이 없어지고, 약 200여 명의 전 직원이 원하는 장소에서 근무하게 됩니다. 또한, 수도권 거점별로 직방 라운지를 개설해 운영한다고 합니다. 직방 라운지는 외부 근무나 오프라인 행사가 있으면 직원들이 자유롭게 방문해 사용할 수 있는 공간으로 꾸려진다고 합니다.
 
이처럼 코로나 19사태로 인해 변화된 사태에 대해서 빠르게 대처하는 모습에 인상 깊었습니다.
사무실과 흡사한 가상 공간이 생긴다면 좀 더 의사소통이 수월해질 수 있다 판단했습니다.
이처럼 코로나 19사태가 지속화되거나 혹은 원격 근무가 기본 근무 형태로 자리 잡게 된다면 개더 타운의 전망이 밝을 것이라 생각합니다.
 
[그림 6] 직방, 온라인 가상업무 공간 개더 타운
 


개더 타운 전망

2020년 말부터 재택근무를 도입한 기업이 늘어나면서 실리콘밸리에서 시작한 가상 오피스 서비스인 개더 타운은 메타버스 기반 화상 회의 서비스로 큰 성장력을 보여주고 있습니다.
이미 실리콘밸리의 대다수 기업에서 도입하여 사용하고 있으며,"여러 가지 상황에서 이용할 수 있고 기능이 다양해 좋다"라는 호평을 받고 있습니다.
개더 타운의 가장 큰 장점으로는 장소의 제약이 없으며 대기업 혹은 신생기업에서 개더 타운의 가상 공간을 통해 비용을 절감할 수 있다고 생각했습니다.
 


마치며

개더 타운은 메타버스의 기술 중 하나이며, 코로나 19 상황을 맞아 비대면 도구로 일상을 파고들고 있습니다. 이미 SK텔레콤, 넥슨, Naver 등의 다양한 기업들이 메타버스의 기술에 관심을 보입니다.
메타버스 기술들이 질서 있게 사회에 정착된다면 분야에 상관없이 많은 부분에서 활약할 수 있을 것이라는 생각합니다.

마지막으로 개더 타운을 활용해 인실리코젠을 만들어보았으며 몇 가지 장점들을 적으며 글을 마치겠습니다.
첫 번째로 접근성이 뛰어났습니다.
사용자가 사용하기 전에 여러 가지 절차를 겪어야 한다면 해당 서비스를 이용하기에는 연령대별로 불편함을 느낄 것으로 생각합니다.
하지만 개더 타운은 가상 공간의 링크를 만들고 해당 링크로 접속할 때 간단한 아바타 명과 접속하기 위한 비밀번호만 기재한다면 쉽게 누구나 참여할 수 있습니다.

두 번째로 재현성이 훌륭했습니다.
공간을 만들 때 public 공간과 private 공간을 나눌 수 있으면서 개인적인 대화의 프라이버시를 지킬 수 있었습니다.
또한, 거리감에 따라 목소리의 들리는 정도가 잘 구현되어 실제 환경에서 대화하는 듯한 느낌을 받았습니다.

마지막으로 딱딱한 화상 회의 서비스보다 재미있는 환경과 아기자기한 분위기를 연출한 것에 대해 정말 높게 평가하고 싶습니다.
이처럼 원격 근무의 단점들을 보완해서 나온 개더 타운을 사용한다면, 기업 분위기를 높일 수 있다고 생각하고 더 좋은 환경에서 근무할 수 있다 생각합니다. :)


[그림 7] 인실리코젠 개더 타운



참고자료
작성 : BS실 이병준 개발자

Posted by 人Co

2021/05/15 19:57 2021/05/15 19:57
, , , , ,
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/381

나만 알고 싶은 OmicsBox



'유전체 데이터는 점차 쌓여가고···쌓여가는 데이터 처리는 해야겠고···이왕 처리하는 거 효율적으로, 내가 원하는 방향으로 처리하고 싶은데···심도 있는 분석은 또 어떻게 진행해야 하는 걸까···' 이런 의문 품어보신 적 다들 있으시죠?! 있을 겁니다! 저 또한 그랬으니까요!

제 경우에는 OmicsBox라는 솔루션이 저의 이러한 의문을 해소해주었습니다. 제가 OmicsBox를 처음 접한 건 바야흐로 대학원 시절. 그 당시에는 OmicsBox로 리뉴얼 되기 전인 Blast2GO 버전이었습니다. 저는 그 당시 De Novo Transcriptome 분석을 진행했었고, BLAST 분석 이후의 후속 분석인 Functional Analysis(GO, KEGG, InterProScan)를 Blast2GO를 이용하여 진행했었습니다.

만약 그 당시의 저에게 Blast2GO가 없었다면, 저는 아마 졸업을 못 했을 겁니다. (생각만 해도 끔찍하네요.)
서론이 길었네요 :D 자, 그럼 이렇게 저를 무사히 졸업시켜주는데 일조했던 OmicsBox(구 Blast2GO)! 과연 어떤 기능을 하는 생물정보 솔루션인지 이제부터 차근차근 알아볼까요?



나만 알고 싶은 OmicsBox

OmicsBox 기능을 알아보기 전에 OmicsBox는 무엇인지에 대해 먼저 알아보겠습니다.

OmicsBox는 새로운 genome 분석을 위한 최고의 생물정보학 플랫폼(Platform)임과 동시에 산업, 학술 및 정부 연구기관의 생물학자를 위한 사용자 친화적인 생물정보학 데스크톱 애플리케이션(Desktop application)입니다. 이러한 OmicsBox는 기능 유전체학의 선두주자로서 세계적으로 인정받고 있으며, 이는 7,000개 이상의 과학 연구 인용으로 입증되었습니다. 또한, OmicsBox는 genomics, transcriptomics, metagenomics의 NGS 데이터 분석에 최적화(de novo 파트)되어 있으며, 필요에 따라 데이터 분석에 필요한 다양한 모듈(Module)을 결합하여 사용할 수 있습니다.


[그림 1]. OmicsBox OverView

  • 아래는 OmicsBox의 주요 기능을 나열해 봤는데요,
  • 클라우드 플랫폼(Cloud platform)을 활용한 애플리케이션(Application) 고속 실행 및 견고하고 안전한 백엔드(Back-end) 제공
  • Blast 결과의 Gene Ontology mapping
  • Functional Annotation
  • InterProScan domain 검색
  • GO-Slim Reduction
  • KEGG map mapping
  • 통계 정보 차트
  • 다양한 데이터의 import와 export format 지원
  • Eukaryote, prokaryote에 알맞은 model을 이용한 유전자 부위 예측
  • 발현값을 이용한 pairwise/time course 별 분석
이뿐만 아니라 OmicsBox는 아래와 같은 강력한 장점도 가지고 있습니다.



Advantages of OmicsBox

Powerful Tables



[그림 2]. Powerful Tables
풍부한 사용자 인터페이스(Interface)를 통해 대용량 데이터세트를 쉽게 처리할 수 있고, 모든 테이블은 필터링과 정렬을 할 수 있으며, 가장 중요한 것은 다른 결과 세트와 결합할 수 있다는 것입니다. 또한, 후속 분석 단계의 하위 집합을 쉽게 생성하고 추출할 수 있습니다.

Workflows


[그림 3]. Workflows

Workflow manager를 사용하여 생물정보학적 workflow를 생성, 실행 및 저장할 수 있으며, 선택한 분석 단계를 끌어와 workflow를 생성하고 모든 파라미터(Parameter)를 한 곳에서 구성하고 검토할 수 있습니다.
  
Genome Browser


[그림 4]. Genome Browser

Genome Browser는 여러 트랙(Track)을 통해 alignment(.bam), gene annotation(.gff) 및 variant 정보(.vcf)를 결합할 수 있습니다. 그뿐만 아니라 navigation, 필터 및 검색 옵션을 사용하여 쉽고 탐색적인 방법으로 결과를 확인할 수 있습니다.

Omics Cloud Platform



클라우드 플랫폼(Cloud platform)은 대부분의 무거운 작업이 수행되는 OmicsBox에 견고하고 안전하며 자동 확장이 가능한 백엔드(Back-end)를 제공합니다. 또한, 이 시스템을 사용하면 표준 PC에서 매우 까다로운 생물정보학 애플리케이션(Application)을 고속으로 실행할 수 있습니다.
 
자 어떤가요? 전반적으로 OmicsBox에 대해 간략히 알아보았는데, 글을 읽다 보니 내 데이터를 어떻게 처리하면 좋을지 구상이 잡히셨나요? {OK} 아직 잘 안 잡히셨다고요? 괜찮습니다.:-)
이제부터 설명해 드릴 OmicsBox의 4가지 모듈을 살펴보고 나면 구상이 잘 잡히실 겁니다.
그럼 한번 살펴볼까요?



Four modules of OmicsBox


[그림 6]. Four modules of OmicsBox

Genome Analysis
  • Quality Control : 샘플의 품질 관리를 수행하기 위해, FastQC와 Trimmomatic을 사용하여 Reads를 필터링하고, low quality bases를 제거할 수 있습니다.
  • De Novo Assembly : ABySS를 기반으로 하는 assembly 기능을 통해 reference genome 또는 특정 하드웨어(Hardware) 요구 사항 없이 전체 genome sequence를 재구성할 수 있습니다.
  • Repeat Masking : 다운스트림(Down-stream) 유전자 예측을 개선하기 위해 RepeatMasker를 사용하여 진핵생물 genome의 반복적이고 복잡성이 낮은 assemble된 DNA sequence를 마스킹(Masking)할 수 있습니다.
  • Gene Finding : Genome 구조를 특성화하기 위해 원핵생물(Glimmer 사용) 및 진핵생물(Augustus 사용) 유전자 예측을 수행할 수 있으며, 진핵생물 유전자 예측은 RNA-seq 인트론 힌트를 지원합니다.
  • Genome Browser : 트랙(Track) 형태로 annotation을 시각화하여 genome sequences(.fasta), alignments(.bam), intron-exon structure(.gff) 및 variant data(.vcf)와 결합할 수 있습니다.

Transcriptomics
  • Quality Control : 샘플의 품질 관리를 수행하기 위해, FastQC와 Trimmomatic을 사용하여 Reads를 필터링하고 low quality bases를 제거할 수 있습니다.
  • De Novo Assembly : Reference genome 없이 de novo transcriptome을 생성하기 위해 Trinity 프로그램을 이용하여 짧은 Reads를 조립할 수 있습니다.
  • RNA-Seq Alignment : 초고속 유니버설(Universal) RNA-seq aligner인 STAR를 사용하여 RNA-seq 데이터를 reference genome에 alignment 할 수 있습니다.
  • Quantify Expression : HTSeq 또는 RSEM을 사용하여 reference genome의 유무와 관계없이 gene 또는 transcript 수준에서의 발현을 정량화할 수 있습니다.
  • Differential Expression Analysis : NOISeq, edgeR 또는 maSigPro와 같이 잘 알려진 다양한 통계 패키지(Package)를 사용하여 실험 조건 간 또는 시간이 지남에 따라 차등적으로 발현된 유전자를 검출할 수 있습니다. 또한, 풍부한 시각화는 결과를 해석하는 데 많은 도움이 됩니다.
  • Enrichment Analysis : 차등 발현 결과를 functional annotation과 결합함으로써, Enrichment 분석은 과잉 및 과소 표현된 생물학적 기능을 식별할 수 있도록 해줍니다.

Metagenomics
  • Quality Control : 샘플의 품질 관리를 수행하기 위해, FastQC와 Trimmomatic을 사용하여 Reads를 필터링하고 low quality bases를 제거할 수 있습니다.
  • Taxonomic Classification : Kraken에서 현재의 종(세균, 고세균, 바이러스)을 식별하고, 다단계의 Pie chart인 Krona와 샘플 간의 비교 막대 그래프로 결과를 시각화할 수 있습니다.
  • Metagenomics Assembly : 클라우드(Cloud)에서 빠르고 쉽게 대규모 데이터세트를 조립하기 위해 MetaSPAdes와 MEGAHIT 중에서 선택할 수 있습니다.
  • Gene Prediction : 가능 유전자와 단백질을 식별하고 추출하기 위해 일반 Reads에는 FragGeneScan, 조립된 데이터에는 Prodigal을 사용할 수 있습니다.
  • Functional Interpretation : EggNOG-Mapper 및 PfamScan을 사용하여 높은 처리량의 functional annotation을 얻을 수 있고, 결과를 GO graph 및 chart로 시각적으로 표현하고 비교할 수 있습니다.

Functional Analysis
  • High-Throughput Blast and InterProScan : CloudBlast 및 CloudInterProScan을 사용하여 선택한 reference 데이터세트에 대해 빠른 sequence alignment 및 domain 검색을 수행할 수 있습니다.
  • Gene Ontology Mapping : UniProt 및 Gene Ontology Consortia의 최신 데이터베이스에서 사용 가능한 functional annotation을 사용하여 잠재적인 homologous와 domain을 연결할 수 있습니다.
  • Blast2GO Annotation : Blast2GO 방법론을 사용함으로써, source annotation 품질 및 ontology 계층을 고려하여 가장 신뢰할 수 있는 기능 label을 새로운 sequence 데이터세트에 유연하게 할당할 수 있습니다.
  • Enrichment Analysis : 서로 다른 enrichment 분석 방법 (Fisher Exact Test 및 GSEA)을 사용하여 과다 및 과소 표현된 분자 기능을 식별할 수 있습니다.
  • Functional Interpretation : 다양한 시각화를 통해 annotation process를 평가할 수 있을 뿐만 아니라 실험 및 기능 분석 결과의 생물학적 해석을 도울 수 있습니다.

Genome 분석, Transciptome 분석, Metagenome 분석 받고 Functional Annotation 분석까지! NGS 분석 대부분 분야를 섭렵한 OmicsBox, 어떠신 것 같나요? 구상이 어느 정도 잡히시고 있나요? 점점 OmicsBox 매력에 빠져들고 계신가요? :))
그럼 이쯤에서 이런 질문을 던질 수도 있습니다. "Genome 분석, Transcriptome 분석, Metagenome 분석, Functional Annotation 분석까지 기능은 매우 좋은데 어떻게 이용해야 할지 잘 모르겠어요···"
걱정하지 마세요! 저희에게는 앞서 언급되었던 장점 중 하나인 workflows가 있습니다!



OmicsBox Workflows

Genome Analysis Workflows
  • Eukaryotic Genome Analysis Workflow
  • Prokaryotic Genome Analysis Workflow
  • Long Reads Eukaryotic Genome Analysis Workflow
  • Long Reads Prokaryotic Genome Analysis Workflow

[그림 7]. Eukaryotic Genome Analysis Workflow
 

Transcriptomics Workflows
  • De Novo Transcriptome Characterization Workflow
  • Transcript-level Analysis Workflow
  • Gene-level Analysis Workflow



[그림 8]. De Novo Transcriptome Characterizatioin Workflow
 

Metagenomics Workflows
  • Taxonomic Classification Workflow
  • Functional Annotationi Workflow



[그림 9]. Taxonomic Classification Workflow
 

Metagenomics Workflows


[그림 10]. Functional Analysis Workflow
 
Raw data만 넣어주고, 각 단계의 파라미터(Parameter)만 잡아주면~ 자동으로 output까지 산출되는 workflow! 참으로 간단하죠? {OK}
OmicsBox workflow만 있으면 어렵던 유전체 데이터 분석이 앞으로는 재미있게 느껴질 수 있습니다.



마치며
이번 포스팅(Posting)에서는 OMICS 데이터 분석을 용이하게 해주는 생물정보학 솔루션 OmicsBox에 대해 알아보았는데요. Genome 분석부터 Functional Annotation 분석까지 많은 기능이 있는 아주 매력적인 솔루션이라고 생각이 됩니다. 더군다나 어떤 기능을 어떻게 사용해야 하는지 잘 모르더라도 강력한 기능인 workflow가 있어서 손쉽게 output을 얻을 수도 있구요. 만약 NGS 데이터 분석이 아직 어렵고 낯설게 느껴지는 분들이 계신다면 이번 포스팅의 주인공인 OmicsBox를 강력! 추천해 드립니다. 후회하지 않으실 거에요 :D
 
만약 OmicsBox와 친해지고 싶으시다면 consulting@insilicogen.com으로 메일 주세요.
친절히 안내 드리도록 하겠습니다.
마지막으로 긴 글 읽어주셔서 감사드리며, 모두 건강한 나날 보내시길 바랍니다.
감사합니다.
 
OmicsBox : BIOINFORMATICS MADE EASY


Posted by 人Co

2021/04/30 17:17 2021/04/30 17:17
, , , , , ,
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/380



바이오-인공지능 기술을 실용적 소프트웨어로!


㈜인실리코젠은 첨단 바이오기술을 in-silico 상에서 구체화하고 가치를 만들어내는 선도기업입니다. 최근의 인공지능, 빅데이터 기술과 결합하여 의료계와 농림식품수산업계 등 바이오 산업 전반에 무한한 가능성을 제공하고 있습니다. 생명과학의 최신지식과 기술, 데이터를 의미기반 모델링하고, 예측 모델을 만들고, 성능을 개선하고, 사용자 인터페이스를 만드는 전체 과정에서 소프트웨어 기술의 중요성은 아무리 강조해도 지나치지 않습니다.
당사는 파이썬, R 언어로 데이터 분석, AI 모델을 구축하며, 파이썬 백엔드(django) API와 반응형 웹, Flutter, Android를 이용한 모바일 앱 개발을 주력으로 하며, 사내 Gitlab 프로젝트 관리하에 지속적 통합(CI)과 동료 간 코드리뷰를 기본 개발환경으로 활용합니다.   

귀하의 SW 개발 능력을 바이오-인공지능 분야에 발휘하고 싶은 분들과 함께하고 싶습니다.


[채용분야]

파이썬(Python) 프로그래머
- 지역 및 인원 : 본사(용인) 0명(신입, 경력)
- 담당업무 : Django 백엔드 서버 개발

Jupyter, pandas 데이터 분석, AI 모델 개발
- 자격요건 : 파이썬을 이용한 데이터 분석/웹 개발 경험

HTML / CSS / JavaScript 기본 활용 가능
- 우대사항 : 오픈소스 개발 경험 (Github 계정 공유)

반응형 웹 프론트엔드 개발 경험

모바일 앱 프로그래머
- 지역 및 인원 : 본사(용인) 0명(신입, 경력)
- 담당업무 : 모바일 앱 개발

Android, iOS 개발
Flutter 개발
- 자격요건 : 모바일 앱 개발 경험(Flutter 우대)
애플 앱스토어, 구글 플레이에 모바일 앱 등록 경험
- 우대사항 : 오픈소스 개발 경험(Github 계정 공유)


웹 퍼블리셔 / UI 개발자 / Front End Developer
- 지역 및 인원 : 본사(용인) 0명(신입, 경력)
- 담당업무 : 웹퍼블리싱

UI 개발
- 자격요건 : HTML5/CSS3 기본 지식

웹표준, 웹접근성을 고려한 마크업
반응형 웹, 크로스브라우징 이슈 개선 가능
(경력) 관련 업무 2년 이상- 우대사항 : Bootstrap 활용 및 Git사용

CSS 전처리기(SCSS) 사용
번들러 사용 경험
디자인 & 협업도구(XD, 포토샵, slack 등) 기본 활용
JavaScript를 활용한 동적구현 가능
Django 프로젝트 경험
인근거주자


[전형절차]

1. 서류전형 : 2021.04.28(수) ~ 2021.05.14(금)
     - 입사지원서(당사양식)
     - 포트폴리오 제출(자유 형식, URL포함)
     - 서류전형 합격자에게만 1차 면접 요청(이메일 통지)

2. 1차 실무자 면접 : 2021.05.10(월) ~ 2021.05.18(화)

     - 제출한 포트폴리오로 5분간 자기소개 PT 진행
     - 1차 면접 합격자에게만 2차 면접 요청(이메일 통지)

3. 2차 임원 면접  : 2021.05.17(월) ~ 2021.05.21(금)
     - 2차 면접 합격자에게만 3차 추가서류 제출 요청(이메일 통지)

4. 추가서류 제출  : 2021.05.20(목) ~ 2021.05.27(목)
     - 하단 제출서류 참고


5. 최종합격 통보 : 2021.05.28(금) 예정
     - 입사예정일 : 2021.06.27(월)


[채용형태]
신입(인턴 3개월 계약 포함), 경력(경력에 따라 수습계약 포함)


[근무환경]
- 근무제 : 주 5일 근무
- 복리후생 : 4대 보험, 퇴직연금 및 성과급, 유연근무제 (장기근속자)
- 휴가제 : 연차, 경조휴가, 충전휴가(장기근속자)
- 지원 : 경조사비, 주차비, 교육훈련비, 도서 등 지원


[접수방법]
서류제출방법 : E-mail 첨부 제출 (ms@insilicogen.com)


[제출서류]
1) 서류전형 시
 ① 자사 입사지원서 : 파일명 `입사지원서_성명_지원분야.docx`로 저장
 ② 개인정보 이용 동의서 포함

2) 1차 면접전형 시(서류전형 합격자에게만 1차 면접 요청_이메일 통지)
 공통 : 포트폴리오(PDF) 제출 및 발표(자기소개 및 경력 위주 내용, 5분 이내)

3) 3차 서류 제출(2차 면접 합격자에게만 3차 추가서류 제출 요청_이메일 통지)
 ① 공통 : 건강검진확인서 및 병력확인서 제출
 ② 경력지원 시
  - 전 근무지의 근로자 원천징수 영수증(퇴사연도, 직전연도)
  - 고용보험이력확인서 : 고용보험 사이트에서 발급 가능

Posted by 人Co

2021/04/27 15:28 2021/04/27 15:28
Response
No Trackback , No Comment
RSS :
https://post-blog.insilicogen.com/blog/rss/response/379



« Previous : 1 : 2 : 3 : 4 : 5 : 6 : 7 : ... 75 : Next »